如何使用PHP通过FTP从文件获取chmod权限

时间:2019-04-30 01:06:28

标签: php ftp

我正在使用FTP进行操作,但是我需要获取每个文件的现有chmod权限。我该如何实现?

我已经尝试过fileperms()函数,但这似乎仅适用于本地文件。

1 个答案:

答案 0 :(得分:0)

如果您使用的是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";
    }
}

如果没有,则必须使用ftp_rawlist function使用LIST命令并解析服务器返回的专有格式。

以下代码假定使用通用的* 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";
}