解决PHP ftp_put(): php_connect_nonb() failed: No error (0)

连接上ftp服务器后,发现 ftp_nlist 和 ftp_put 都会报这个No error的错,导致无法列出目录下的文件,也没办法上传文件。

解决办法是设置一个参数 FTP_USEPASVADDRESS 注意要放到设置被动模式的代码前。

ftp_set_option($conn, FTP_USEPASVADDRESS, false);
ftp_pasv($conn, true); // 被动模式

至于这个参数是干啥的,文档上的解释如下

当此选项禁用时,PHP 会忽略掉 FTP 服务器通过 PASV 命令返回的 IP 地址,直接使用在 ftp_connect() 中指定的地址。value 参数必须是布尔型。