2013-03-01 2 views
3

Я размещал изображения в Amazon S3. И я указываю URL static.example.com на S3 Bucket. Когда я прямо указываю URL http://static.example.com/path/mypic.png в браузере, изображение существует, я могу просматривать и скачивать. Но когда я хочу получить размер и размер изображения в PHP, он показывает эту ошибку.Удаленный размер и размер изображения в PHP, получающий ошибку HTTP

`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 

можно хранить размер в базе данных во время загрузки, но это не решение для меня, у меня уже есть 1000X изображения в S3. Когда я делаю @ getimagesize($path), ошибки не отображаются, но не имеют размера, без измерения.

Я также изучил документацию PHP getimagesize (URL). Пример ссылки - это поддержка удаленных изображений.

Проверка php.ini

Directive   Local Value  Master Value 
allow_url_fopen  On    On 

Где я неправ? Есть ли лучший способ получить размер и размер изображения удаленного образа в PHP?

ПРИМЕЧАНИЕ Я уверен, что путь удаленного изображения на 100% верен.

+1

, пожалуйста, используйте поиск, прежде чем задавать свой вопрос. И о какой части * 404 Not Found * в конкретном вы действительно хотите спросить? – hakre

+0

Так что, если я задаю вам вопрос: * Как устранить удаленный доступ HTTP с помощью встроенных функций PHP, таких как getimagesize? * Вы можете ответить на него уже? – hakre

ответ

5

Проверьте файл php.ini. Наиболее вероятная причина в том, что ваш сервер не настроен на enable allow_url_fopen. Это параметр, который по умолчанию отключен в качестве меры предосторожности.

Кроме того, как только вы получите эту работу, вы можете захотеть убедиться, что вы кешируете результаты, потому что getimagesize загрузит все удаленное изображение, прежде чем возвращать результаты, что приведет к большому перетаскиванию вашего сервера.

В этом последнем пункте вы можете проверить FastImage, как предложено baba ... и это может полностью избежать проблемы, если эта проблема не является enable allow_url_fopen.

+0

Я не могу ручаться за любой из них, но на странице [php.net getimagesize] (http://www.php.net/manual/en/function.getimagesize.php) есть несколько функций, которые предназначены для решения этот вопрос (в основном полагаясь на захват только первых нескольких строк и попытку захватить всю информацию) –

+0

проверено 'php.ini' и' allow_url_fopen' уже включено, я редактировал вопрос. –

+0

Вы проверили, можете ли вы захватить любые удаленные изображения? Попробуйте захватить с другого сайта, которым вы управляете. –