PHP的ftp_put操作失敗
P粉884548619
2023-08-24 22:05:13
<p>我透過FTP上傳XML檔:</p>
<pre class="brush:php;toolbar:false;">$ftp = "ftp";
$username = "使用者名稱";
$pwd = "密碼";
$filename = $_FILES[$xyz][$abc];
$tmp = $_FILES['file']['tmp_name'];
$destination = "/Content/EnquiryXML ";
$connect = ftp_connect($ftp)or die("無法連線到主機");
ftp_login($connect,$username,$pwd)or die("授權失敗");
echo "已連線!<br/>";
if(!$filename)
{
echo"請選擇檔案";
}
else
{
ftp_put($connect,$destination.'/'.$filename,$tmp,FTP_ASCII)or die("無法上傳");
echo"檔案成功上傳到FTP";
}</pre>
<p>我想使用<code>DOMDocument</code>建立的XML檔案傳送到FTP伺服器,但我無法成功。 </p>
<p><code>ftp_put</code>回傳false。 </p>
這個工作了:
導致
ftp_put
(或任何其他傳輸指令,如ftp_get
、ftp_nlist
、ftp_rawlist
、ftp_mlsd
)出現問題的最常見原因是PHP預設為主動模式。在99%的情況下,需要切換到被動模式才能使傳輸正常運作。使用ftp_pasv
函數。ftp_pasv
必須在ftp_login
之後呼叫。在之前調用它沒有效果。另請參見:
此外,如果您的FTP伺服器在回應
PASV
命令時報告了錯誤的IP位址(如果伺服器位於防火牆/NAT後,這是相當常見的),您可能需要使用以下方式解決:請參考PHP FTP 被動FTP伺服器位於NAT後面。
儘管在這種情況下,正確的解決方案是修復伺服器。