PHP の ftp_put 操作が失敗しました
P粉884548619
2023-08-24 22:05:13
<p>FTP 経由で XML ファイルをアップロードします。</p>
<pre class="brush:php;toolbar:false;">$ftp = "ftp";
$ユーザー名 = "ユーザー名";
$pwd = "パスワード";
$ファイル名 = $_FILES[$xyz][$abc];
$tmp = $_FILES['ファイル']['tmp_name'];
$destination = "/Content/EnquiryXML ";
$connect = ftp_connect($ftp)or die("ホストに接続できません");
ftp_login($connect,$username,$pwd) または die("認証に失敗しました");
echo "接続されました!
";
if(!$ファイル名)
{
echo "ファイルを選択してください";
}
それ以外
{
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の後に呼び出す必要があります。前に呼び出しても効果はありません。
PASV
コマンドに応答するときに FTP サーバーが間違った IP アドレスを報告する場合 (サーバーがファイアウォール/NAT の背後にある場合、これは非常に一般的です)、以下を使用してこれを行う必要がある場合があります。解決する:### リーリー
。参照
PHP FTP パッシブ FTP サーバーは NAT の背後にありますただし、この場合の正しい解決策はサーバーを修復することです。