Белый экран смерти!

После отладки приложения codeigniter, которое было установлено в новой среде разработки, я начал волноваться, когда вижу белые экраны, на которых больше ничего нет. Мне удалось устранить все ошибки, которые вызвали это, но это заняло слишком много времени.

PHP error_reporting(E_ALL) & display_errors", 1 также установлен. Я даже установил Xdebug в надежде получить больше информации, но нет. Мои настройки ведения журнала также работают, но в журнал ничего не записывается.

Есть ли способ распечатать что-нибудь информативное вместо белого экрана? Это, безусловно, сократит мое время, затрачиваемое на устранение возможных ошибок, которые вызывают это?

Большое спасибо!

Ссылка: Почему Code Igniter дает мне белую страницу?

11 ответов

Решение

Со времени моего вопроса я обнаружил, что, похоже, ничто не гарантирует, что ошибки всегда выводятся с помощью PHP, который, кажется, выбрасывает белые экраны тут и там. Независимо от ini-настроек PHP.

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

ini_set('error_log', MYPATH .'logs/errorlog.log'); 

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

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

php -l <filename.php>

против вашего сценария

Посмотрите на вершину /index.php для звонка в error_reporting() - и убедитесь, что это не меняет ваш php.ini Конфигурация на что-то другое (кроме E_ALL).

И так как вы не упомянули php.ini конфигурации, проверьте, чтобы убедиться, что у вас есть error_reporting = E_ALL там тоже.

Grep файлы для "error_reporting" и "display_errors", приложение может где-то отключить его.

Кроме того, чтобы увидеть ошибки синтаксического анализа, вам нужно установить error_reporting/display_errors в файле php.ini или в файле.htaccess, его установка в файлах сценария не будет выполняться и приведет к появлению белой страницы, которую вы описываете, если Есть ошибки синтаксического анализа.

Лучше всего иметь контрольный список распространенных проблем, которые могут вызвать это, поскольку CI по умолчанию уже

error_reporting(E_ALL);
  1. Одноименные контроллеры и модели
  2. используя зарезервированные слова в качестве методов

список можно продолжить..

Помимо всего прочего, также убедитесь, что что-то замаскировано с @ (оператор подавления ошибок) не генерирует фатальную ошибку.

У меня была эта проблема на моем только что установленном сервере. Debian 7. Я включил ведение журнала, отчеты об ошибках, отключил gzip и так далее.

Однако в моей PHP-установке MySQL не был включен. Включение MySQL помогло мне.

Рассмотрите возможность настройки переменной конфигурации PHP error_log - это может быть полезно, когда у вас есть настройка кода error_reporting() без вашего ведома. Затем вы можете проверить журнал ошибок и посмотреть, какие ошибки, если таковые были, произошли.

Убедитесь, что ваши журналы и папка кеша внутри /system chmod'ed 777.

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

Убедитесь, что в выходных файлах вне буфера CI нет пробелов, особенно если сжатие включено. Вы можете проверить это, отключив сжатие в вашем конфигурационном файле CI.

См. Второй шаг по адресу: http://codeigniter.com/user_guide/installation/upgrade_141.html (обратите внимание, что, хотя это и относится к обновлению, он содержит фрагмент файла конфигурации, который объясняет проблему.)

Другие вопросы по тегам