从脚本运行时,此函数可能需要 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)