検索

ホームページ  >  に質問  >  本文

PHP の ftp_put 操作が失敗しました

<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>
P粉884548619P粉884548619462日前716

全員に返信(2)返信します

  • P粉225961749

    P粉2259617492023-08-25 18:30:59

    これはうまくいきました:

    リーリー

    返事
    0
  • P粉056618053

    P粉0566180532023-08-25 15:46:37

    結果は ftp_put (または ftp_getftp_nlistftp_rawlistftp_mlsd## などの他の転送コマンド) # ) 問題の最も一般的な理由は、PHP がデフォルトでアクティブ モードになっていることです。 99% の場合、トランスミッションが適切に動作するにはパッシブ モードに切り替える必要があります。 ftp_pasv関数を使用します。 リーリー

    ftp_pasvftp_login の後に呼び出す必要があります。前に呼び出しても効果はありません。

    こちらも参照:

    • PHP ftp_put が失敗し、「警告: ftp_put (): PORT コマンドが成功しました」が表示されます。
    • アクティブおよびパッシブ FTP 接続モード に関する私の 記事。
    さらに、
    PASV

    コマンドに応答するときに FTP サーバーが間違った IP アドレスを報告する場合 (サーバーがファイアウォール/NAT の背後にある場合、これは非常に一般的です)、以下を使用してこれを行う必要がある場合があります。解決する:### リーリー 参照PHP FTP パッシブ FTP サーバーは NAT の背後にあります

    ただし、この場合の正しい解決策はサーバーを修復することです。

    返事
    0
  • キャンセル返事