Если вы используете PHP 7.2 и новее, а ваш FTP-сервер поддерживает команду MLSD
, это просто, так как вы можете использовать ftp_mlsd
function .
$conn_id = ftp_connect("ftp.example.com") or die("Cannot connect");
ftp_login($conn_id, "username", "password") or die("Cannot login");
ftp_pasv($conn_id, true) or die("Cannot change to passive mode");
$entries = ftp_mlsd($conn_id, "/remote/path") or die("Cannot list directory");
foreach ($entries as $entry)
{
if (($entry["type"] != "cdir") && ($entry["type"] != "pdir"))
{
echo $entry["name"] . " - " . $entry["UNIX.mode"] . "\n";
}
}
Если нет, вы должны использовать команду LIST
, используя ftp_rawlist
функцию и анализировать собственный формат, который возвращает сервер.
В следующем коде используется обычный * nix формат.
$entries = ftp_rawlist($conn_id, "/remote/path") or die("Cannot list directory");
foreach ($entries as $entry)
{
$tokens = explode(" ", $entry);
$name = $tokens[count($tokens) - 1];
$permissions = $tokens[0];
echo $name . " - " . $permissions . "\n";
}