Перейти к содержимому

ftp_rawlist()

Понимание функции PHP ftp_rawlist()

Функция ftp_rawlist() — это встроенная функция PHP, которая возвращает развёрнутый список содержимого директории на FTP-сервере. В этой статье мы подробно рассмотрим эту функцию и предоставим вам исчерпывающее руководство по её использованию в ваших PHP-проектах.

Что такое ftp_rawlist()?

Функция ftp_rawlist() — это встроенная функция PHP, которая возвращает развёрнутый список содержимого директории на FTP-сервере. Она принимает два обязательных параметра и один необязательный:

  1. ftp_stream: Объект соединения или ресурс, возвращаемый функцией ftp_connect().
  2. directory: Директория, содержимое которой нужно вывести.
  3. recursive (необязательный): Установите в true для рекурсивного вывода подкаталогов.

При успешном выполнении функция возвращает массив строк, содержащий развёрнутый список директории. В противном случае она возвращает false. Обратите внимание, что возвращаемый массив содержит необработанный вывод FTP-команды LIST, который может отличаться в зависимости от операционной системы и конфигурации сервера. В отличие от ftp_nlist(), которая возвращает простой массив имён файлов, ftp_rawlist() предоставляет полный необработанный вывод, включая права доступа, владельца и размеры файлов.

Синтаксис ftp_rawlist()

Синтаксис функции ftp_rawlist() выглядит следующим образом:

Синтаксис ftp_rawlist()

php
array ftp_rawlist ( FTP\Connection|resource $ftp_stream , string $directory [, bool $recursive = false ] )

Функция ftp_rawlist() принимает два обязательных параметра: ftp_stream и directory. Параметр ftp_stream — это идентификатор соединения, возвращаемый функцией ftp_connect(), а параметр directory — это директория, содержимое которой необходимо вывести. У функции также есть один необязательный параметр recursive, который позволяет указать, нужно ли выводить подкаталоги.

Использование ftp_rawlist()

Чтобы использовать функцию ftp_rawlist(), сначала необходимо установить соединение с FTP-сервером с помощью функции ftp_connect(). Вот пример:

Использование ftp_rawlist()

php
<?php

// Set up an FTP connection
$conn = ftp_connect('ftp.example.com');
if (!$conn) {
    die("Could not connect to FTP server.");
}

// Login with your FTP credentials
if (!ftp_login($conn, 'username', 'password')) {
    die("Login failed.");
}

// Get a detailed listing of the directory
$listing = ftp_rawlist($conn, '/public_html');

// Output the listing to the console
if ($listing) {
    foreach ($listing as $item) {
        echo $item . "\n";
    }
}

// Close the FTP connection
ftp_close($conn);
?>

В этом примере мы устанавливаем соединение с FTP-сервером с помощью функции ftp_connect() и проверяем его успешность. Затем мы выполняем вход с использованием учётных данных FTP через функцию ftp_login() и проверяем результат входа. Мы получаем развёрнутый список директории с помощью функции ftp_rawlist() и выводим его в консоль. Наконец, мы закрываем FTP-соединение с помощью функции ftp_close().

Примечание по безопасности: Стандартный FTP передаёт учётные данные и данные в открытом виде. Для рабочих сред рекомендуется использовать ftp_ssl_connect() для явного FTP поверх TLS или перейти на SFTP (через расширение ssh2) для зашифрованной передачи.

Обработка ошибок в ftp_rawlist()

Важно правильно обрабатывать ошибки при использовании функции ftp_rawlist(). Если функция возвращает false, это означает, что операция не была выполнена успешно. Вот пример обработки ошибок:

Обработка ошибок в ftp_rawlist()

php
<?php

// Assuming $conn is an active FTP connection
$listing = ftp_rawlist($conn, '/public_html');

if (!$listing) {
    echo "Failed to get directory listing from FTP server.\n";
}

ftp_close($conn);
?>

Правильно обрабатывая ошибки и проверяя возвращаемое значение функции, вы можете гарантировать успешное выполнение ваших FTP-операций с помощью функции ftp_rawlist().

Заключение

Подводя итог, функция ftp_rawlist() — это полезный инструмент для получения развёрнутого списка содержимого директории на FTP-сервере. При правильном использовании и обработке ошибок она может стать ценным помощником в ваших PHP-проектах.

Практика

Какова функция ftp_rawlist в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.