Как получить разрешения chmod из файла через FTP с помощью PHP - PullRequest
1 голос
/ 30 апреля 2019

Я работаю над чем-то, что использует FTP, но мне нужно получить существующие разрешения chmod для каждого файла.Как мне этого добиться?

Я пробовал функцию fileperms(), но, похоже, она работает только с локальными файлами.

1 Ответ

0 голосов
/ 30 апреля 2019

Если вы используете 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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...