我尝试使用PHP连接到其他FTP服务器并将文件上传到它。
在我的本地计算机上,代码工作正常,但是当我从登台服务器运行此代码时,我收到了以下警告,并且我无法与FTP服务器通信。
以下是我收到的警告。
警告:ftp_put()[function.ftp-put]:我在 / code /中打开了与10.140.166.143(仅限52.232.262.219)的连接sites / my_web / model / Request.php 在线 193
52.232.262.219是我的登台服务器的IP地址。
第193行如下:
$file_upload_status = ftp_put($conn_id, $remote_file, $file, FTP_BINARY);
注意:我没有放入所有代码,因为它是在本地计算机上运行的。它只能从登台服务器上运行。
是否由于php.ini文件中的设置而发生这种情况。由于我本地的php.ini文件可能有一些不同的设置,而不是登台服务器上的php.ini文件。
答案 0 :(得分:1)
警告:ftp_put()[function.ftp-put]:我在/code/sites/my_web/model/Request.php上打开了与10.140.166.143(仅限52.232.262.219)的连接第193行
很难仅从此错误消息中猜出,但我假设
看起来FTP服务器不知道它在NAT路由器后面,并在对PASV
的响应中发送其私有IP地址10.140.166.143。但是客户端在52.232.262.219上有一个到服务器的控制连接(公共IP,可能是从路由器转发到服务器的端口),因此不喜欢,数据连接应该在不同的地址进行。
修复:使用主动模式(当客户端也在NAT路由器或防火墙后面时不起作用)。某些服务器也可以配置为宣布与其自己的地址不同的地址。这些也可以在被动模式下使用,前提是路由器配置为转发大范围的端口。
答案 1 :(得分:0)
FTP服务器只接受来自IP地址52.232.262.219的连接,并且您的IP是10.140.166.143 :(
查看ftp服务器的配置