尝试ftp_chdir的坏处不是需要抑制错误.没关系,只要你有合理的理由期待错误.这更改了目录的副作用.
如果我采取这个方向,我会尝试使用ftp_size,因为它没有任何副作用.它应该失败的目录和成功的文件.
理想的解决方案是使用MLSD FTP命令返回可靠的机器可读目录列表.但PHP仅支持7.2及其ftp_mlsd function.检查dir值的“type”条目.
在采用这种方法之前,首先检查您的FTP服务器是否支持MLSD,因为并非所有FTP服务器都这样做(特别是IIS and vsftpd don’t).
或者,如果要连接到一个特定的服务器,因此您知道其目录列表的格式,则可以使用ftp_rawlist,并解析其输出以确定条目是文件还是文件夹.
* nix服务器上的典型列表如下:
drwxr-x--- 3 vincent vincent 4096 Jul 12 12:16 public_ftp
drwxr-x--- 15 vincent vincent 4096 Nov 3 21:31 public_html
-rwxrwxrwx 1 vincent vincent 11 Jul 12 12:16 file.txt
如果条目是一个目录,它是告诉你的领先者.
您可能很幸运,在您的具体情况下,您可以通过文件名告诉目录中的文件(即所有文件都有扩展名,而子目录则没有).