mod_rewrite препятствует выводу картинок

KolyaA

Новичок
mod_rewrite препятствует выводу картинок

Имеется файл image.php такого содержания:

PHP:
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
Он отрабатывает правильно.

Далее. Так как сайт работает с ЧПУ, то файл вызывается не напрямую. По ссылке '/имя сайта/image/' вызывается mod_rewrite-ом index.php, который уже запускает вышепоказанный код. В итоге получаю, что на одном хостинге всё опять же прекрасно работает, на другом же картинка не отображается. Надо же чтобы работало на обоих.

Так как без mod_rewrite всё работает, то грешу на него. Хотя не уверен. Так как слабо знаю апач, то прошу помощи. Буду рад, если хотя бы наведёте на область, в которой копать, так как совсем не уверен, что мои догадки правильные.
 

Фанат

oncle terrible
Команда форума
может, не грешить, а отлаживать?
или программирование ты тоже знаешь слабо?
 

KolyaA

Новичок
Наверное тоже слабо, потому что не представляю как отлаживать.

Если убрать строку
PHP:
header('Content-type: image/jpeg');
то никаких ошибок не показывает и в обоих случаях на вывод подаётся одинаковый в обоих случаях код картинки.
 

Фанат

oncle terrible
Команда форума
если запускается тот скрипт, который надо, то при чем здесь может быть рерайт?
 

KolyaA

Новичок
В том то и дело, что я не знаю. Но при прямом запуске скрипта всё работает. Единственную причину, которую смог придумать - что-нибудь с настройками апача.

(Вообще это zend framework если что)
 

Фанат

oncle terrible
Команда форума
а вывод с кодом картинки ты просматриваешь, конечно же, в браузере, а не в виде исходного кода?
 

KolyaA

Новичок
Да в браузере.

Можно попробовать, конечно, вывести в текстовый файл. Но что это даст?
 

Фанат

oncle terrible
Команда форума
ё. моё.
если браузер у тебя показывает одну картинку, а другую показывает - значит, эти картинки различаются.
чтобы посмотреть, чем они различаются, надо сравнить файлы.
 

KolyaA

Новичок
Сейчас проверю.

-~{}~ 19.03.09 15:03:

Вроде одинаковые файлы получились. По размеру одинаковые и текст смотрел - отличий не заметил ....

-~{}~ 19.03.09 15:05:

У меня ещё подозрение такое, что хостинг, на котором работает виндовый, а на котором не работает юниксовский. Может с этим м.б. связано....

-~{}~ 19.03.09 16:24:

В опере вообще любопытно получается. Картинка не отображается, но можно нажать на пустой рамке "Сохранить изображение ..." и оно сохранится как надо.
 

KolyaA

Новичок
Код:
[url]http://имя[/url] сайта/kcaptcha/a2006bddfb20afa76023d2c825d91227/

GET /kcaptcha/a2006bddfb20afa76023d2c825d91227/ HTTP/1.1
Host: имя сайта
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; ru; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.12
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=a2006bddfb20afa76023d2c825d91227
Cache-Control: max-age=0

HTTP/1.x 200 OK
Date: Thu, 19 Mar 2009 13:36:14 GMT
Content-Type: image/jpeg
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Server: Apache
Cache-Control: max-age=0
Expires: Thu, 19 Mar 2009 13:36:12 GMT
-~{}~ 19.03.09 18:42:

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

Фанат

oncle terrible
Команда форума
сравнивай полученное побайтно, например утилитой fc
 

KolyaA

Новичок
Сейчас обнаружил в чём дело. Когда не работает, то в загружаемом изображении в начале кода стоят какие-то левых три знака. "п>ї". Прочитал, что это "сигнатура того что файл в юникоде".

Кажется уже тепло становится.:)

-~{}~ 19.03.09 21:06:

Разобрался, что было. Во всём сайте используется кодировка "UTF-8 without signature". Сайт сделан так, что запросы со всех урлов перенаправляются на index.php, который их и обрабатывает. В index.php кодировка оказалась изменена на "UTF-8 with signature". (Не знаю как это произошло, но похоже благодаря akelapad, который всё время предлагал добавлять в сохраняемые файлы какие-то знаки.)

Как именно это действовало не знаю, но в итоге к выводимым текстам добавлялись вначале эта сигнатура. Картинки из-за этого портились, а при текстовом выводе они даже не отображались. При выводе в текстовый файл сигнатура не добавлялась.

-~{}~ 19.03.09 21:08:

*****, большое спасибо. Всегда намного легче, когда рядом человек, который может предложить, что надо делать.
 
Сверху