У меня есть сайт, где я буферизую некоторый вывод с помощью
ob_start(); ...
и он работал нормально до сегодняшнего дня, я обновил свой debian от более старого php5.3 до последнего php5.3.3-7 + squeeze8
Теперь у меня иногда есть что-то в выходном буфере, прежде чем я назову его в первый раз
пожалуйста, не отвечайте на такие вещи, как
«заголовок должен быть вызван до отправки любого вывода». (Я знаю, я много работаю с выходными буферами)
когда я устанавливаю дополнительный ob_get_clean (); в первой строке моего скрипта он работает
<? ob_get_clean();
похоже, что php создает некоторый вывод заранее, если я поставлю первую строку
<? print_r(ob_get_clean()); ?>
то я вижу, что в буфере есть пустая строка:
«»
на всех остальных страницах это нет, там ob_get_clean (); содержит
ноль
возможно ли, что у вас есть «» перед вашим <?php
где-то? или неправильная кодировка файлов, как правило, это своего рода характер, проверьте ваши файлы и включите файлы.
Теперь у меня иногда есть что-то в выходном буфере, прежде чем я назову его в первый раз
Это будет намного проще, если вы дадите нам некоторую информацию об этих таинственных данных.
возможно, случай с характером спецификации? больше информации здесь
я нашел это:
у меня не было невидимого персонажа впереди, это было что-то другое: я назвал ob_end_clean () один раз слишком много:
это был мой код, внутри функции, которую я вызываю:
function print_something(){ ob_start(); echo some stuff... echo ob_get_clean(); ob_end_clean(); // this was the bug! }
кажется, что вы можете очистить свой основной буфер вывода;)