PHP ftp_put 失敗:分析問題並解決它
傳輸時ftp_put() 無法正常運行可能是一個令人沮喪的問題通過FTP 傳輸檔案。在 PHP 中,此問題的常見原因在於預設使用主動模式。
主動與被動模式傳輸
主動模式指示 FTP 伺服器連接到指定連接埠上的用戶端。另一方面,被動模式讓伺服器偵聽隨機端口,然後將其提供給客戶端。在大多數情況下,使用被動模式是必要的,特別是當 FTP 伺服器位於防火牆或 NAT 之後時。
解決問題
將PHP 的FTP 傳輸切換為被動模式模式下,必須呼叫ftp_pasv() 函數:
$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");
其他注意事項
在某些情況下,FTP 伺服器可能會報告錯誤回應PASV 指令的IP 位址。這可以透過停用PASV 位址來解決:
ftp_set_option($connect, FTP_USEPASVADDRESS, false);
最佳實務
雖然上述解決方案可以緩解問題,但最佳解決方案是設定FTP 伺服器使用正確的IP 位址和連接埠配置。這確保了在所有場景下都能正常運作。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3