Intereting Posts
CodeIgniter Date или DateTime Как я могу автоматически настроить ширину изображения, созданного GD, в соответствии с текстом? Альтернатива php's explode / implode-functions в c # создание изображения в php, отображение работы, сохранение в файл не Сравнение часового пояса пользователя с часовым поясом офиса Доступ к сеансу в командной строке PHP? Laravel – запрос Guzzle / cURL 6: не удалось разрешить хост PHP принимает все комбинации Предотвращение повторного выполнения сценария при обновлении страницы Как вы храните случайные части массива в массиве и затем печатаете в виде списка? Каков наилучший способ получить последний элемент массива без его удаления? PHP openssl_public_encrypt вызывает перезагрузку страницы / соединение? Изменение значения строки PHP на основе проверки состояния с помощью AJAX как запустить самообновление composer.phar в Travis Бесконечная прокрутка на странице, загруженной ajax

Ошибки внутри выходного буфера

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

Я бы очень признателен за любую помощь, потому что у меня есть я в тупике!

public function constructor() { ob_start(array(__CLASS__, 'render')); self::$buffer_level = ob_get_level(); set_error_handler(array(__CLASS__, 'exception_handler')); set_exception_handler(array(_CLASS__, 'exception_handler')); RUNNING MY SCRIPT HERE ob_end_flush(); } public static function exception_handler($exception, $message = NULL, $file = NULL, $line = NULL) { while (ob_get_level() > self::$buffer_level) { ob_end_clean(); } echo $exception.' - '.$message.' - '.$file.' - '.$line.'<br/>'; } 

Я хотел бы предложить включить журнал ошибок в PHP, который по умолчанию отправит ошибки в журнал ошибок apache. Вы также можете попробовать включить track_errors, но я думаю, что журнал – лучший выбор. Если у вас нет доступа к журналу apache, возможно, вам придется вручную записывать данные.

Файлы журналов и стратегии трассировки необходимы при использовании буферизации вывода и других вещей «за кулисами» (например, ajax).

Вы также можете посмотреть настройку output_buffering. См. Эту статью: http://thinkpositivesoftware.blogspot.com/2009/03/have-blank-php-page.html