Подтвердить что ты не робот

Отображать ошибки php при использовании Zend framework

Я использую Zend Framework и просто живу с этой проблемой некоторое время, но теперь это стало слишком раздражающим, поэтому я отправлю вопрос вам.

В рамках Zend есть определенные проблемы, которые Zend может распознать (например, вызвать несуществующий контроллер) и отправит эту проблему в ErrorController. У меня это нормально работает.

Похоже, что некоторые проблемы, которые Zend Framework терпит неудачу и отображают ошибку через php, например, если какая-то функция не существует или что-то еще. Те, кого я вижу и исправляю.

Иногда, однако, Zend не сбой, но он также просто отправит пустой ответ. Я получу пустую страницу. Они не отображаются, нет кода, нет ничего, что могло бы дать мне представление о том, что случилось не так. В прошлый раз возникла ошибка require(). Мне пришлось вручную понять это без обратной связи.

Испытывали ли вы кого-нибудь из вас? У вас есть какие-либо советы о том, как получить эти ошибки? Любая помощь будет оценена!

4b9b3361

Ответ 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');