Der ftp_put-Vorgang von PHP ist fehlgeschlagen
P粉884548619
2023-08-24 22:05:13
<p>Ich lade die XML-Datei per FTP hoch: </p>
<pre class="brush:php;toolbar:false;">$ftp = "ftp";
$username = "username";
$pwd = "Passwort";
$filename = $_FILES[$xyz][$abc];
$tmp = $_FILES['file']['tmp_name'];
$destination = "/Content/EnquiryXML";
$connect = ftp_connect($ftp)or die("Verbindung zum Host konnte nicht hergestellt werden");
ftp_login($connect,$username,$pwd)or die("Autorisierung fehlgeschlagen");
echo „Verbunden!<br/>“;
if(!$Dateiname)
{
echo „Bitte wählen Sie eine Datei aus“;
}
anders
{
ftp_put($connect,$destination.'/'.$filename,$tmp,FTP_ASCII)or die("Hochladen nicht möglich");
echo „Datei erfolgreich auf FTP hochgeladen“;
}</pre>
<p>Ich möchte eine mit <code>DOMDocument</code> erstellte XML-Datei an einen FTP-Server senden, aber es gelingt mir nicht. </p>
<p><code>ftp_put</code> gibt false zurück. </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后面。
尽管在这种情况下,正确的解决方案是修复服务器。