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>
ベスト プラクティス
上記の解決策で問題は軽減できますが、最適な解決策は次のとおりです。正しい IP アドレスとポート構成を使用するように FTP サーバーを構成します。これにより、あらゆるシナリオで適切な動作が保証されます。
以上がPHP ftp_put() が失敗する理由: 問題の分析と解決の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。