1

このトピックについては多くの質問がありますが、私のシナリオに対する答えは見つかりませんでした。

私が取り組んでいるクライアントプロジェクトは、PHP 4.3.9を実行しているサーバーでホストされており、リモートイメージをサーバーにコピーしようとしています。これは常にタイムアウトで失敗します:

var_dump(
   copy('http://domain.com/path/to/image.jpg', 
        '/opt/www/myfolder/myimage.jpg')
);

これに関するエラーメッセージは次のとおりです。Warning: copy(http://domain.com/path/to/image.jpg): failed to open stream: Connection timed out in /opt/www/myfolder/my-script.php on line xx bool(false)

私はいくつかのini設定のトレースを行いましたが、それは私には問題ないように思われます。

var_dump(
    ini_get('upload_max_filesize'), 
    ini_get('post_max_size'), 
    ini_get('max_execution_time'), 
    ini_get('max_input_time'), 
    ini_get('allow_url_fopen'));

このトレース:

string(2) "8M" string(2) "8M" string(2) "30" string(2) "60" string(1) "1"

したがってallow_url_fopen、有効になっているようで、他の設定も問題ないようです。私はさまざまな画像を試しました。すべてブラウザからアクセスでき、すべて小さいサイズで、さまざまなリモートホストがあります。私のサーバーのターゲットディレクトリは書き込み可能であり、たとえば、自分のサーバーのURIからファイルをコピーすると、ファイルは問題なくコピーされます。

私もこの答えcurlの変形を試しましたが、同じ結果になりました。

新しいバージョンのPHPを使用して別のサーバーで同じスクリプトを試してみると、正常に機能します。

プロジェクトサーバーのどの設定がこれを失敗させる可能性がありますか?PHP 4.3.9について、これが失敗する原因となる何かが欠けていますか?

PHPのバージョンを変更することはできず、アップグレードするようにアドバイスしたり、クライアントにアップグレードするように説得したりする必要はありません。

編集upload_max_filesize40MBとmax_execution_time600に変更されましたが、結果は変わりません。

4

2 に答える 2

0

コメントで@Charlesと@SalmanAが指摘しているように、サーバーの接続に問題があり、コピー呼び出しが妨げられているようです。

@SalmanAのコメントに基づいてwget、sshシェルから使用しようとすると、同様のタイムアウト結果が表示され、接続がブロックされたことを示しています。

サーバーホストに連絡してさらに問い合わせることが、ここでの解決策です。

于 2012-12-21T07:32:25.447 に答える
-2

php.iniでデフォルトのmax_execution_timeをmax_execution_time=600に変更する必要があります-MUST

アップロードの最大サイズをデフォルト値からphp.iniファイルで必要な値に変更するか、ini_set ()を使用してコードを変更してください。これは、アップロードのみを試みる場合に役立ちます。

upload_max_filesize = 40M

于 2012-12-20T08:04:07.687 に答える