Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2007-07-22

тоже забавно, PHP headers_sent & CGI mode

Да, кому забавно, а у кого сайт работать перестает.
Есть на сайте программулина, на PHP, выдает клиенту файл по номеру.
Для указания правильного mime используется функция header()
И все это дело внутри некоего фреймворка, который тоже, не будь дурак, всякие хидеры пишет.
Правда отгрузка файла сбрасывает все буферы и когда далее по коду фреймворк хочет выдать свои заголовки, проверка headers_sent() его обламывает.

Все это в теории и работает только если PHP подключен как модуль Апача, типа так:
LoadModule php5_module "d:/httpd/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "d:/httpd/php"

А если подключить пыха как CGI обработчик, типа так:
ScriptAlias /php5/ "D:/httpd/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php5/php-cgi.exe"
всё. Браузер перестает понимать, что ему присылают. Потому как фреймворк посылает свои заголовки, потому как проверка headers_sent() уже не срабатывает.

Я не стал разбираться, фича это или бага. Я понял, что если уж так планеты сложились, что надо пользоваться режимом CGI, то, будь любезен, всю работу с заголовками оберни в свой код. А лучше это сделать при любых вариантах. Спокойнее.

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)