首頁  >  文章  >  後端開發  >  為什麼 PHP ftp_put() 失敗:分析與解決問題

為什麼 PHP ftp_put() 失敗:分析與解決問題

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-24 05:07:02109瀏覽

Why is PHP ftp_put() Failing: Analyzing and Solving the Issue

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn