我正在尝试在我的网站和远程服务器之间进行 ftp 上传。
我收到此错误 PHP 警告:ftp_put(): php_connect_nonb() failed: Operation now in progress (115)。
我做了研究,我相信这是问题http://www.elitehosts.com/blog/php-ftp-passive-ftp-server-behind-nat-nightmare/
问题是,我无法下载补丁,因为我使用的是 Godaddy Cpanel,他们说我们拥有的托管不允许它,我也无法通过 ssh 进入它以能够运行命令行。
我读到在 PHP v5.6+ 中应用了补丁,但我无法获得 ftp_set_option($ftpconn, USEPASVADDRESS, true); 上班。它不识别USEPASVADDRESS,我认为它会识别,因为我使用的是v5.6.22。
也许您已经设法绕过它,但正确使用的常量是FTP_USEPASVADDRESS,而不仅仅是USEPASVADDRESS,不管您在噩梦页面上能找到什么。这独立于 Godaddy 或其他托管(但请注意,我不使用 Godaddy,所以我不能打赌它在那里工作)。
此外,噩梦页面上的示例可能会产生误导,因为它报告了使 PHP 表现得好像该选项根本不存在的代码(例如,使其表现得像默认情况下已经存在的那样):
ftp_set_option($ftpconn, USEPASVADDRESS, true);
echo "USEPASVADDRESS Value: " . ftp_get_option($ftpconn, USEPASVADDRESS) ? '1' : '0';
ftp_pasv($ftpconn, true);
Run Code Online (Sandbox Code Playgroud)
我认为页面可以给出的最好的例子是这样的:
ftp_set_option($ftpconn, FTP_USEPASVADDRESS, false);
echo "FTP_USEPASVADDRESS Value: " . ftp_get_option($ftpconn, FTP_USEPASVADDRESS) ? '1' : '0';
ftp_pasv($ftpconn, true);
Run Code Online (Sandbox Code Playgroud)
例如,它可以显示如何实际使用该选项,而不是如何浪费一行代码将选项设置为其默认值。