Белый экран смерти!
После отладки приложения codeigniter, которое было установлено в новой среде разработки, я начал волноваться, когда вижу белые экраны, на которых больше ничего нет. Мне удалось устранить все ошибки, которые вызвали это, но это заняло слишком много времени.
PHP error_reporting(E_ALL)
& display_errors", 1
также установлен. Я даже установил Xdebug в надежде получить больше информации, но нет. Мои настройки ведения журнала также работают, но в журнал ничего не записывается.
Есть ли способ распечатать что-нибудь информативное вместо белого экрана? Это, безусловно, сократит мое время, затрачиваемое на устранение возможных ошибок, которые вызывают это?
Большое спасибо!
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);
- Одноименные контроллеры и модели
- используя зарезервированные слова в качестве методов
список можно продолжить..
Помимо всего прочего, также убедитесь, что что-то замаскировано с @
(оператор подавления ошибок) не генерирует фатальную ошибку.
У меня была эта проблема на моем только что установленном сервере. 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 (обратите внимание, что, хотя это и относится к обновлению, он содержит фрагмент файла конфигурации, который объясняет проблему.)