从脚本运行时,此函数可能需要 ftp_pasv,用于将服务器切换到被动模式。
如果您位于防火墙之后,ftp_mlsd 将返回 FALSE。
(PHP 7 >= 7.2.0, PHP 8)
ftp_mlsd — 返回给定目录中的文件列表
成功时返回包含指定目录中文件信息的二维数组,失败时返回 false
。
版本 | 描述 |
---|---|
8.1.0 | ftp 参数现在需要一个 FTP\Connection 实例;以前需要一个 资源。 |
示例 #1 ftp_mlsd() 示例
<?php
// 建立基本连接
$ftp = ftp_connect($ftp_server);
// 使用用户名和密码登录
$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);
// 获取当前目录的内容
$contents = ftp_mlsd($ftp, ".");
// 输出 $contents
var_dump($contents);
?>
以上示例将输出类似以下内容
array(5) { [0]=> array(8) { ["name"]=> string(1) "." ["modify"]=> string(14) "20171212154511" ["perm"]=> string(7) "flcdmpe" ["type"]=> string(4) "cdir" ["unique"]=> string(11) "811U5740002" ["UNIX.group"]=> string(2) "33" ["UNIX.mode"]=> string(4) "0755" ["UNIX.owner"]=> string(2) "33" } [1]=> array(8) { ["name"]=> string(2) ".." ["modify"]=> string(14) "20171212154511" ["perm"]=> string(7) "flcdmpe" ["type"]=> string(4) "pdir" ["unique"]=> string(11) "811U5740002" ["UNIX.group"]=> string(2) "33" ["UNIX.mode"]=> string(4) "0755" ["UNIX.owner"]=> string(2) "33" } [2]=> array(8) { ["name"]=> string(11) "public_html" ["modify"]=> string(14) "20171211171525" ["perm"]=> string(7) "flcdmpe" ["type"]=> string(3) "dir" ["unique"]=> string(11) "811U5740525" ["UNIX.group"]=> string(2) "33" ["UNIX.mode"]=> string(4) "0755" ["UNIX.owner"]=> string(2) "33" } [3]=> array(8) { ["name"]=> string(10) "public_ftp" ["modify"]=> string(14) "20171211174536" ["perm"]=> string(7) "flcdmpe" ["type"]=> string(3) "dir" ["unique"]=> string(11) "811U57405EE" ["UNIX.group"]=> string(2) "33" ["UNIX.mode"]=> string(4) "0755" ["UNIX.owner"]=> string(2) "33" } [4]=> array(8) { ["name"]=> string(3) "www" ["modify"]=> string(14) "www" ["perm"]=> string(7) "flcdmpe" ["type"]=> string(3) "dir" ["unique"]=> string(11) "811U5740780" ["UNIX.group"]=> string(2) "33" ["UNIX.mode"]=> string(4) "0755" ["UNIX.owner"]=> string(2) "33" } }
从脚本运行时,此函数可能需要 ftp_pasv,用于将服务器切换到被动模式。
如果您位于防火墙之后,ftp_mlsd 将返回 FALSE。
我还没有找到解决方法;但我注意到 ftp_mlsd 命令一次获取的文件数量有限。对我来说,范围在 7500 到 8500 个文件之间。在我看来,它似乎有一些最大查询时间,而您得到的结果取决于文件枚举的速度。
有时需要设置
ftp_set_option($this->connection_id, FTP_USEPASVADDRESS, false)
在您设置之前
ftp_pasv($this->connection_id, $state)