Необходимость префикса всех PHP-страниц с помощью ob_start()

Можно ли иметь ob_start() в начале всех страниц PHP?

Если я этого не сделаю, я получаю сообщение об ошибке «заголовки уже отправлены».


person Community    schedule 12.11.2010    source источник
comment
Если эти ошибки возникают против вашего намерения, вы можете сначала проверить наличие свободных/преждевременных выходных данных и прочее.   -  person BoltClock    schedule 12.11.2010
comment
ага, не забудьте open_end_clean это ob_end_flush но вы должны искать, откуда взялся заголовок   -  person ajreal    schedule 12.11.2010
comment
@ajreal - я почти уверен, что вы имели в виду ob_end_clean, а не open_end_clean. :)   -  person Matt Huggins    schedule 12.11.2010
comment
@Matt Huggins - соли, сейчас 3 часа ночи...   -  person ajreal    schedule 12.11.2010
comment
+1, чтобы компенсировать отрицательный результат (почему, кстати?), И потому что это на самом деле хорошая тема об общем стиле приложения.   -  person poke    schedule 12.11.2010


Ответы (3)


Это «хорошо», но вам действительно следует исправить свой скрипт, чтобы он не выводил данные преждевременно и сохранял вывод на конец. Но вы можете просто изменить настройку в .htaccess или php.ini, как показано ниже для .htaccess:

php_value output_buffering On
php_value output_handler mb_output_handler

На мой взгляд, это было бы предпочтительнее, чем добавлять ob_start в начало всех ваших скриптов.

Тем не менее, вы действительно должны решить проблему в ее основе. IE: сохранить вывод для конца скрипта.

person Jimithus    schedule 12.11.2010

у вас может быть пробел в верхней части страницы

Это приведет к ошибке "ЗАГОЛОВОК УЖЕ ОТПРАВЛЕН"

Понятия не имею о ob_start()

person Gowri    schedule 12.11.2010

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

person poke    schedule 12.11.2010