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中文網其他相關文章!