ftp_put()函数问题。得到警告。如何解决这个问题?

时间:2014-12-03 12:27:02

标签: php ftp remote-server php-5.5

我尝试使用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文件。

2 个答案:

答案 0 :(得分:1)

  

警告:ftp_put()[function.ftp-put]:我在/code/sites/my_web/model/Request.php上打开了与10.140.166.143(仅限52.232.262.219)的连接第193行

很难仅从此错误消息中猜出,但我假设

  • 您正在使用被动模式(客户端希望连接到服务器以进行数据连接)
  • 并且服务器位于某个NAT路由器后面,其中服务器具有内部IP 10.140.166.143但路由器具有外部IP 52.232.262.219

看起来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服务器的配置