このトピックについては多くの質問がありますが、私のシナリオに対する答えは見つかりませんでした。
私が取り組んでいるクライアントプロジェクトは、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_filesize
40MBとmax_execution_time
600に変更されましたが、結果は変わりません。