Если я позвоню:
http://localhost/info/imgfeed.php?img=deer.png в адресной строке IE, то отображается нормально.
Если я свяжу URL-адреса в файле HTML следующим образом:
<img src="imgfeed.php?img=dove.png" alt="" height="" width="" />
<img src="imgfeed.php?img=dolphin.png" alt="" height="" width="" />
<img src="imgfeed.php?img=deer.png" alt="" height="" width="" />
Тогда он с треском проваливается в IE, но отлично работает в других браузерах (проверено Chrome / FF в новейших стабильных выпусках).
Мой код PHP выглядит следующим образом (почти дословно скопировано из руководства по PHP):
<?php
$server = $_SERVER['DOCUMENT_ROOT'];
$path = basename(dirname(__FILE__));
write_img($server.'/'.$path.'/'.$_GET["img"]);
function write_img($filename) {
$size = getimagesize($filename);
if ($size && $fp) {
header("Content-type: {$size['mime']}");
header("Cache-Control: no-cache");
header("Expires: -1");
readfile($filename);
exit;
} else {
// error
}
}
?>
Любые идеи относительно того, что происходит, будут высоко оценены, я попробовал ряд трюков с заголовками, а также с .htaccess (создание файла PHP в виде PNG), но ни одно из этого не имеет никакого влияния на рендеринг в IE, который в конечном итоге показывает только 3 маленьких точки (которые можно сохранить как untitled.bmp).
Обновление проблема решена благодаря Meagar (уберите ширину / высоту из HTML и все хорошо). Обновленный пример обновлен, чтобы отразить совет Марка Б относительно fpassthru vs readfile.