Отображать ошибки php при использовании Zend framework
Я использую Zend Framework и просто живу с этой проблемой некоторое время, но теперь это стало слишком раздражающим, поэтому я отправлю вопрос вам.
В рамках Zend есть определенные проблемы, которые Zend может распознать (например, вызвать несуществующий контроллер) и отправит эту проблему в ErrorController. У меня это нормально работает.
Похоже, что некоторые проблемы, которые Zend Framework терпит неудачу и отображают ошибку через php, например, если какая-то функция не существует или что-то еще. Те, кого я вижу и исправляю.
Иногда, однако, Zend не сбой, но он также просто отправит пустой ответ. Я получу пустую страницу. Они не отображаются, нет кода, нет ничего, что могло бы дать мне представление о том, что случилось не так. В прошлый раз возникла ошибка require(). Мне пришлось вручную понять это без обратной связи.
Испытывали ли вы кого-нибудь из вас? У вас есть какие-либо советы о том, как получить эти ошибки? Любая помощь будет оценена!
Ответы
Ответ 1
Внутренняя обработка ошибок компонентов инфраструктуры MVC может только ловушку Исключения, а не ошибки PHP.
Чтобы помочь в отладке во время разработки, вы можете использовать стандарт:
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 'on');
Кроме того, если вы используете новый автозагрузчик, включенный в 1.8, используйте:
Zend_Loader_Autoloader::getInstance()->suppressNotFoundWarnings(false);
Чтобы разрешить выдачу выписок с запросами include/require.
Ответ 2
Для других, сталкивающихся с этим вопросом: я изменил следующую строку в configs/application.ini
resources.frontController.params.displayExceptions = 0
To:
resources.frontController.params.displayExceptions = 1
Это позволило мне увидеть полное исключение, включая stacktrace.
Ответ 3
Задайте это в своей конфигурации:
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
Ответ 4
Редактировать файл public/index.php.
Измените APPLICATION_ENV на "development".
Это будет использовать настройки разработки в вашем файле application/configs/application.ini. Эти настройки определяют, следует ли подавлять ошибки.
Ответ 5
Слишком поздно ответить на этот вопрос сейчас. Но надеюсь, что это поможет кому-то еще...
Просто разместите следующую функцию в файле Bootstrap.php, чтобы включить исключения.
protected function _initErrorDisplay(){
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
}
Ответ 6
Откройте urproject/application/config и откройте application.ini
Измените вторую строку:
phpSettings.display_errors = 0
к
phpSettings.display_errors = 1
Теперь он будет отображать ошибки.
Ответ 7
Быстрое и грязное решение, если ни один из уже упомянутых методов не работал (полезно для старой или уродливой версии ZF):
- найдите ErrorController вашего приложения.
- поместить вызов функции debug_print_backtrace в начало метода init (с опцией die())
Ответ 8
Для тех, для кого ответы, приведенные здесь, не работают, всегда можно перейти в журналы apache, чтобы увидеть описание проблемы. Конечно, было бы более удобно, если бы это было показано на странице, но я считаю, что это приемлемая альтернатива.
/var/log/apache2/error.log
У меня этот файл открыт с помощью vim и введите: e для обновления и G, чтобы перейти к нижней части страницы, чтобы увидеть самую последнюю ошибку, когда я получу пустую страницу. Он сообщает вам время возникновения ошибки, сообщение и строку, поэтому он очень полезен.
Ответ 9
поместите эти строки в application/configs/config.php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 'on');