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

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

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

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

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

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

php -l <filename.php>

против script

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

error_reporting(E_ALL);
  • Контроллеры и модели с одинаковыми именами
  • использование зарезервированных слов как методов

список продолжается.

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

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

Ответ 11

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