ホームページ >バックエンド開発 >PHPの問題 >php ftp_put がアップロードに失敗した場合の対処方法

php ftp_put がアップロードに失敗した場合の対処方法

藏色散人
藏色散人オリジナル
2020-08-22 09:36:413448ブラウズ

php ftp_put アップロードは、サーバーがファイアウォールの内側に配置されているために失敗します。解決策は、「ftp_put($conn,"target.rar","local.rar"」などのコードを使用して FTP パッシブ モードを有効にすることです。 FTP_BINARY,0 );"。

php ftp_put がアップロードに失敗した場合の対処方法

推奨事項: 「PHP ビデオ チュートリアル

クライアントはファイアウォールの内側にあり、php は ftp を使用してファイルをアップロードしますwhen ftp_put Failure

<?php
$conn = ftp_connect("ftp.bacysoft.cn") or die("Could not connect");
ftp_login($conn,"test","test1234");
ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0);
ftp_close($conn);
echo "done";
?>

コードの説明:

このコードは、PHP サーバー経由でバックグラウンドで FTP プロトコルを使用して、ローカル ファイル「local.rar」をリモート FTP ファイル サーバーにアップロードして保存します。 「target.rar」として保存します。つまり、PHP サーバーは FTP クライアントとして機能し、ファイルを FTP サーバーにアップロードします...

上記のコードを実行した後にエラーが発生しました。エラー メッセージは次のとおりです:

Warning: ftp_put() [function.ftp-put]: Opening BINARY mode data connection for target.rar. in E:\wwwroot\bacysoft\wwwroot\test\temp.php on line 4
 
Fatal error: Maximum execution time of 60 seconds exceeded in E:\wwwroot\bacysoft\wwwroot\test\temp.php on line 5

エラーの理由:

サーバーは通常、ファイアウォールの内側に配置されているため、FTP クライアント プログラムがファイアウォールを通過する必要がある場合は、パッシブ モードを有効にする必要があります。そうしないと、実行時に応答がありません。 「最大実行時間タイムアウト」という致命的なエラーが発生してプログラムが終了するまで、任意の FTP コマンドを実行できません...

ftp_pasv($conn, true);

解決策: FTP パッシブ モードを有効にします。正しいコードは次のとおりです:

<?php
$conn = ftp_connect("ftp.bacysoft.cn") or die("Could not connect");
ftp_login($conn,"test","test1234");
ftp_pasv($conn, true);
ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0);
ftp_close($conn);
echo "done";
?>

以上がphp ftp_put がアップロードに失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。