我正在研究使用FTP的东西,但我需要获得每个文件的现有chmod权限。我怎样才能做到这一点?
我尝试过fileperms()
函数,但这似乎只适用于本地文件。
如果您使用的是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
function解析服务器返回的专有格式。
以下代码采用通用的* 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";
}