php - 如何通过 FTP 获取 chmod 信息
问题描述
我目前正在开发一个在线 FTP 客户端,它的工作方式类似于在桌面上找到的普通 FTP 客户端。我目前无法通过 FTP 获取 chmod 权限。
我已经fileperms()
在 PHP 中尝试过该功能,但它不允许 FTP 协议,仅用于您正在访问的服务器上的本地文件。
解决方案
如果您使用 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";
}