PHP FTP 失败并出现错误 ftp_nlist():php_connect_nonb() 失败:操作正在进行中 (115)
PHP FTP fails with error ftp_nlist(): php_connect_nonb() failed: Operation now in progress (115)
我在尝试使用 PHP FTP 函数发送文件时遇到问题。
我正在尝试使用网络服务器上的 PHP 函数 运行 将文件 (PDF) 从网络服务器 (UNIX) 发送到办公室的 Windows 服务器。 FTP 已安装在 Windows 服务器上。
函数连接办公服务器,登录成功。但是,一旦该函数尝试执行任何操作(例如列出办公室服务器目录的内容),我就会收到错误消息(例如... ftp_nlist(): php_connect_nonb() failed: Operation now in progress (115)
)。目标服务器记录错误:[Administration Server] Couldn't bind on 192.168.1.1:14148. Reason: EADDRINUSE - Local address in use. Retrying in 1 seconds
。我已尝试查找这些错误,但一直无法找到对我有帮助的任何内容。
连接需要是被动的,从 SO 中的其他答案来看,我认为使用错误的 IP 地址停止被动模式很重要。所以现在也在那里 (ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false)
) 但我仍然遇到同样的错误。
我在使用 SSL 或非 SSL 连接时遇到同样的问题。
我已经设法得到对 ftp_systype 的回复,它告诉我“UNIX”。
其他人在 SO 上谈到导致此错误的间歇性问题(例如 "php_connect_nonb() failed: Operation now in progress (115)" happens intermittently),但对我来说这是一个持续的错误。我已经检查过 FTP 服务器设置为 return 建立被动模式时的外部 IP 地址。我也了解到 PHP 的旧版本存在一些问题。我的网络服务器上有 PHP v7.4。
我可以使用 Filezilla 和 WinSCP 毫无问题地连接(和复制文件),只是在使用 PHP 功能时没有问题。
PHP函数包含:
$ftp_conn = ftp_ssl_connect($ftp_server, $ftp_port); // response is resource(2) of type (FTP Buffer)
$login = ftp_login($ftp_conn, $username, $password);
$result = ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false);
$result = ftp_pasv($ftp_conn, true);
echo '<br>The system type is: '.ftp_systype($ftp_conn); // The system type is: UNIX
$already_there = ftp_nlist($ftp_conn, '.'); // this triggers the error!
我希望有人能给我指出正确的方向或建议我尝试其他方法。
非常感谢!
确保您的网络服务器托管允许传出 FTP 数据连接。
FTP 数据连接(在被动模式下)需要在防火墙中打开单独的端口范围,而不仅仅是控制连接端口 21。
我在尝试使用 PHP FTP 函数发送文件时遇到问题。
我正在尝试使用网络服务器上的 PHP 函数 运行 将文件 (PDF) 从网络服务器 (UNIX) 发送到办公室的 Windows 服务器。 FTP 已安装在 Windows 服务器上。
函数连接办公服务器,登录成功。但是,一旦该函数尝试执行任何操作(例如列出办公室服务器目录的内容),我就会收到错误消息(例如... ftp_nlist(): php_connect_nonb() failed: Operation now in progress (115)
)。目标服务器记录错误:[Administration Server] Couldn't bind on 192.168.1.1:14148. Reason: EADDRINUSE - Local address in use. Retrying in 1 seconds
。我已尝试查找这些错误,但一直无法找到对我有帮助的任何内容。
连接需要是被动的,从 SO 中的其他答案来看,我认为使用错误的 IP 地址停止被动模式很重要。所以现在也在那里 (ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false)
) 但我仍然遇到同样的错误。
我在使用 SSL 或非 SSL 连接时遇到同样的问题。
我已经设法得到对 ftp_systype 的回复,它告诉我“UNIX”。
其他人在 SO 上谈到导致此错误的间歇性问题(例如 "php_connect_nonb() failed: Operation now in progress (115)" happens intermittently),但对我来说这是一个持续的错误。我已经检查过 FTP 服务器设置为 return 建立被动模式时的外部 IP 地址。我也了解到 PHP 的旧版本存在一些问题。我的网络服务器上有 PHP v7.4。
我可以使用 Filezilla 和 WinSCP 毫无问题地连接(和复制文件),只是在使用 PHP 功能时没有问题。
PHP函数包含:
$ftp_conn = ftp_ssl_connect($ftp_server, $ftp_port); // response is resource(2) of type (FTP Buffer)
$login = ftp_login($ftp_conn, $username, $password);
$result = ftp_set_option($ftp_conn, FTP_USEPASVADDRESS, false);
$result = ftp_pasv($ftp_conn, true);
echo '<br>The system type is: '.ftp_systype($ftp_conn); // The system type is: UNIX
$already_there = ftp_nlist($ftp_conn, '.'); // this triggers the error!
我希望有人能给我指出正确的方向或建议我尝试其他方法。
非常感谢!
确保您的网络服务器托管允许传出 FTP 数据连接。
FTP 数据连接(在被动模式下)需要在防火墙中打开单独的端口范围,而不仅仅是控制连接端口 21。