3

AmazonS3で画像をホストしました。そして、URLstatic.example.comをS3バケットにポイントします。http://static.example.com/path/mypic.pngブラウザにURLを直接入力すると画像が存在し、閲覧・ダウンロードもできます。しかし、PHPで画像のサイズとサイズを取得したい場合、このエラーが表示されます。

`getimagesize($path)`

そして、これはエラーです。

A PHP Error was encountered

Severity: Warning

Message: getimagesize(http://static.example.com/path/mypic.png) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found

Filename: views/template.php

Line Number: 98

アップロード中にデータベースにサイズを保存できますが、それは私にとっての解決策ではありません。S3にはすでに1000倍の画像があります。私が行うと@ getimagesize($path)、エラーは表示されませんが、サイズも寸法も表示されません。

PHPのドキュメントgetimagesize(URL)も調べました。リンクの例は、リモートイメージをサポートすることを想定しています。

チェック中php.ini

Directive           Local Value     Master Value
allow_url_fopen     On              On

私はどこが間違っていますか?PHPでリモート画像の画像サイズとサイズを取得するためのより良い方法はありますか?

リモートイメージパスが正しいことを100%確信しています。

4

1 に答える 1

5

php.iniファイルを確認してください。最も可能性の高い原因は、サーバーが に設定されていないことenable allow_url_fopenです。これは、セキュリティ対策としてデフォルトで無効になっている場合がある設定です。

また、余談ですが、これが機能するようになったら、結果をgetimagesize返す前にリモート イメージ全体をダウンロードするため、結果をキャッシュしていることを確認することをお勧めします。これにより、サーバーに多くの負荷がかかります。

この最後の点については、 babaの提案に従って FastImageを確認することをお勧めします。enable allow_url_fopen

于 2013-03-01T05:55:00.203 に答える