ftp_put() 函数出现问题.得到警告.如何解决这个问题


Issue with ftp_put() function. getting warning. How to fix this?

我正在尝试使用 PHP 连接到其他 FTP 服务器并将文件上传到其中。

在我的本地计算机上,代码工作正常,但是当我从暂存服务器运行此代码时,我收到以下警告,并且无法与FTP服务器通信。

以下是我得到的警告。

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

52.232.262.219 是我的暂存服务器的 IP 地址。

第 193 行如下所示:

$file_upload_status = ftp_put($conn_id, $remote_file, $file, FTP_BINARY);

注意:我没有放置所有代码,因为它是在本地计算机上工作的。它不仅从暂存服务器工作。

这是由于 php.ini 文件中的设置而发生的吗?由于 php.ini 我的本地文件可能与此设置不同,而不是临时服务器上存在的 php.ini 文件。

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

仅从此错误消息中很难猜测,但我认为

  • 您正在使用被动模式(客户端想要连接到服务器进行数据连接(
  • 并且服务器位于某个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路由器或防火墙后面时也不起作用(。某些服务器还可以配置为播报不同的地址,然后播报自己的地址。这些也可以在被动模式下使用,前提是路由器配置为转发大范围的端口。

FTP 服务器仅接受来自 IP 地址 52.232.262.219 的连接,您的 IP 为 10.140.166.143 :(

查看 ftp 服务器的配置