PHP ftp_put 失败:分析问题并解决它
ftp_put() 无法正常运行可能是传输时令人沮丧的问题通过 FTP 传输文件。在 PHP 中,此问题的常见原因在于默认使用主动模式。
主动与被动模式传输
主动模式指示 FTP 服务器连接到指定端口上的客户端。另一方面,被动模式让服务器侦听随机端口,然后将其提供给客户端。在大多数情况下,使用被动模式是必要的,尤其是当 FTP 服务器位于防火墙或 NAT 之后时。
解决问题
将 PHP 的 FTP 传输切换为被动模式模式下,必须调用 ftp_pasv() 函数:
<code class="php">$connect = ftp_connect($ftp) or die("Unable to connect to host"); ftp_login($connect, $username, $pwd) or die("Authorization failed"); // Switch to passive mode ftp_pasv($connect, true) or die("Unable switch to passive mode");</code>
其他注意事项
在某些情况下,FTP 服务器可能会报告响应 PASV 命令的 IP 地址不正确。这可以通过禁用 PASV 地址来解决:
<code class="php">ftp_set_option($connect, FTP_USEPASVADDRESS, false);</code>
最佳实践
虽然上述解决方案可以缓解问题,但最佳解决方案是配置 FTP 服务器以使用正确的 IP 地址和端口配置。这确保了在所有场景下都能正常运行。
以上是为什么 PHP ftp_put() 失败:分析和解决问题的详细内容。更多信息请关注PHP中文网其他相关文章!