NAT后面的PHP FTP +被动FTP服务器

时间:2016-08-16 19:22:29

标签: php ftp

我正在尝试在我的网站和远程服务器之间进行ftp上传。

我收到此错误PHP警告:ftp_put():php_connect_nonb()失败:正在进行操作(115)。

我做了研究,我相信这是问题http://www.elitehosts.com/blog/php-ftp-passive-ftp-server-behind-nat-nightmare/

问题是,我无法下载补丁,因为我正在使用Godaddy Cpanel,他们说我们拥有的托管不允许它,我也不能用它来运行命令行。

我在PHP v5.6 +中看到补丁被应用但我无法获得ftp_set_option($ ftpconn,USEPASVADDRESS,true);上班。它不承认USEPASVADDRESS,我认为它会因为我使用的是v5.6.22。

1 个答案:

答案 0 :(得分:4)

也许您已经设法绕过它,但正确使用的常量是FTP_USEPASVADDRESS,而不仅仅是USEPASVADDRESS,无论您能找到什么at the nightmare page。这是独立于Godaddy或其他托管(但请注意我不使用Godaddy,所以我不能打赌它在那里工作)。

此外,噩梦页面中的示例可能会产生误导,因为它会报告代码以使PHP表现得好像该选项根本不存在(例如,使其表现得像默认情况下那样):< / p>

ftp_set_option($ftpconn, USEPASVADDRESS, true);
echo "USEPASVADDRESS Value: " . ftp_get_option($ftpconn, USEPASVADDRESS) ? '1' : '0';
ftp_pasv($ftpconn, true);

我认为页面可以提供的最好的例子就是这样:

ftp_set_option($ftpconn, FTP_USEPASVADDRESS, false);
echo "FTP_USEPASVADDRESS Value: " . ftp_get_option($ftpconn, FTP_USEPASVADDRESS) ? '1' : '0';
ftp_pasv($ftpconn, true);

e.g。它可以显示如何实际使用该选项,而不是如何浪费一行代码将选项设置为其默认值。