В общем, случилось так, что жить приходится вот на той связке, что в заголовке обозначена. Только не надо спрашивать, почему именно такая комбинация. Это отдельное грустное кино.
В общем, есть в галерее этой запрос типа такого:
Code:
/forum/dbtgallery.php?do=gallery_image&id=14&gal=gallery&type=thumb
который должен выдавать изображение, в данном случае - превьюху. И оказалось, что если открыть это в отдельном окне, можно увидеть вот такую красоту:
В общем, дело оказалось в том, что после выдачи картинки наружу скрипт не останавливает работу, а рендерит дальше форумный шаблон и т.д. А никто этого, как правило, не видит потому, что в основном везде linux + apache, и они просто по-разному работают с заголовками.
Для примера, сделал такой вот файлик, который примерно показывает, что там происходит:
PHP Code:
<?php
header("Content-type: " . "image/png");
echo file_get_contents("./images/smilies/distant.png");
header("Content-type: " . "text/html; charset=UTF-8");
echo ("<html>");
echo ("<body>");
echo (" 1232132131231223");
echo ("</body>");
echo ("</html>");
?>
закинул в корень форума и, соответственно, с IIS получаю картинку в виде текста, а с linux/apache - картинку.
Грустное кино в том, что в любом случае в ответе, который приходит на такой запрос от сервера, Dragonbyte Gallery всегда присылает кусок интерфейса форума. Специально на нескольких первых попавшихся в поиске по "dbtgallery.php" сайтах проверил (но это нужна какая-нить софтина, которая полностью в тексте покажет ответ сервера).
Для пробы нашел в dbtech\gallery\includes\class_core.php метод fetch_thumb_display
и после
PHP Code:
header("Content-type: " . $mime_type);
echo file_get_contents($img_location);
попробовал воткнуть exit();
Выдача сервера пришла в норму. Но, т.к. PHP-шник из меня пока фиговый (я программер, но совсем в другой области), я не знаю правильно ли всё это. Такие дела.
В общем-то понятно, что это надо в саппорт писать. Но может кто что подскажет, как будет правильнее все это дело поправить?
WatcherOfTheSun добавил 28.10.2014 в 23:55
Да, вот
пример с живого сайта с интернета
Ответ сервера там в виде хексдампа представлен, но все равно все видно.