#php #apache #symfony #firefox #symfony-http-foundation
#php #apache #symfony #firefox #symfony-http-foundation
Вопрос:
Я сталкиваюсь с некоторыми странными проблемами, когда Firefox пытается загрузить файлы изображений, созданные PHP. Происходит на Mac и Windows (7, 8, 10).
Консоль Firefox говорит:
Изображение повреждено или усечено.
В Chrome, Safari и IE / Edge все работает нормально.
Но это не постоянная ошибка, иногда одни и те же изображения загружаются полностью или, по крайней мере, частично в Firefox.
Статические изображения, обслуживаемые непосредственно Apache, также работают без каких-либо проблем.
Код на стороне сервера довольно простой и выглядит следующим образом:
$response = new BinaryFileResponse($file->getPathname());
return $response;
Вот заголовок необработанного ответа статических (рабочих) изображений:
Connection: close
Date: Thu, 20 Oct 2016 11:55:04 GMT
Etag: "1ab1567-d2e0-53f396a39fd2e"
Server: Apache
Vary: User-Agent
Вот одно из изображений, сгенерированных PHP:
Accept-Ranges: bytes
Cache-Control: max-age=1209600, public, s-maxage=1209600
Connection: close
Content-Encoding: gzip
Content-Type: image/jpeg
Date: Thu, 20 Oct 2016 11:57:45 GMT
Last-Modified: Thu, 20 Oct 2016 10:12:05 GMT
Server: Apache
Transfer-Encoding: chunked
Vary: Accept-Encoding,User-Agent
Следует упомянуть одну вещь, я использую один и тот же скрипт примерно на 30 веб-сайтах без каких-либо проблем. Так что, возможно, это проблема на стороне сервера?
Комментарии:
1. Попробуйте добавить длину содержимого к заголовкам
2. Я попробовал это с
$response->headers->set('Content-Length', filesize($file->getPathname()));
, но заголовки ответов не изменились. Я также заметил, что Firefox и Chrome оба получают Transfer-Encoding: chunked, в то время как Safari получает «Identity».
Ответ №1:
В моем случае причиной был установленный плагин AdBlock Plus в Firefox 😉
Комментарии:
1. Я больше не работаю в этой компании, но, насколько я помню, это было именно так 😉 Не уверен, что я когда-либо находил решение.