У меня есть следующий скрипт, который читает файл изображения с сервера и возвращает его пользователю.
Без причины браузеры (как chrome, так и FF) перестали показывать изображение, даже если в сетевом менеджере все выглядит нормально, заголовки и размер файла указаны правильно, а сам файл создан на сервере.
if (!file_exists($previewFileName)) {
//... here comes creating the image code, I had tested it and the image is there!!!
}
//http://stackoverflow.com/a/15271869/2992810
session_write_close();
header("Content-Type: image/$ext");
//set cache header
$seconds_to_cache = -1; //three month
$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
header("Expires: $ts");
header("Pragma: nocache");
header("Cache-Control: max-age=$seconds_to_cache");
//return the file
echo file_get_contents($previewFileName);
die();
а вот заголовки ответа:
HTTP/1.1 200 OK
Date: Sat, 22 Nov 2014 16:02:42 GMT
Server: Apache/2.4.9 (Win64) OpenSSL/1.0.1g PHP/5.5.12
X-Powered-By: PHP/5.5.12
P3P: CP="CAO PSA OUR"Expires: Sat, 22 Nov 2014 16:02:41 GMT
Cache-Control: max-age=-1
Pragma: nocache
Set-Cookie: kdm_csrf_cookie=d1bd278e07c72a69659d3c97471001b5; expires=Sat, 22-Nov-2014 18:02:42 GMT; Max-Age=7200; path=/
X-Frame-Options: SAMEORIGIN
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: image/jpg
Диспетчер сети Chrome выводит размер файла 523 КБ.
но ни Chrome, ни FireFox не показывают само изображение.
Я подумал, что, возможно, само изображение повреждено, но я открыл его прямо с моего HD, и оно прекрасно работает, поэтому я не имею понятия, что заставляет браузеры не отображать изображение.
Любая подсказка или идея о том, как отладить его дальше, будет принята с благодарностью ….
для тех, кто сталкивался с ошибками, связанными с изображениями в будущем.
пожалуйста, убедитесь, что вы ничего не печатаете на экране, прежде чем читать файл изображения.
Я случайно напечатал 2 пробела, это приводит к сбою чтения изображения!
Черт!
Других решений пока нет …