Отображать ошибки php при использовании Zend Framework - PullRequest
24 голосов
/ 29 июля 2009

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

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

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

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

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

Ответы [ 9 ]

32 голосов
/ 29 июля 2009

Внутренняя обработка ошибок компонентов MVC платформы может перехватывать только исключения, а не ошибки PHP.

Чтобы помочь в отладке во время разработки, вы можете использовать стандарт:

error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 'on');

Кроме того, если вы используете новый автозагрузчик, включенный в 1.8, используйте:

Zend_Loader_Autoloader::getInstance()->suppressNotFoundWarnings(false);

Чтобы разрешить выдачу операторов include / require.

12 голосов
/ 17 сентября 2010

Для других, кто сталкивался с этим вопросом: я изменил следующую строку в config / application.ini

resources.frontController.params.displayExceptions = 0

Кому:

resources.frontController.params.displayExceptions = 1

Это позволило мне увидеть полное исключение, включая stacktrace.

11 голосов
/ 19 октября 2011

Установите это в вашей конфигурации:

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
8 голосов
/ 17 июня 2011

Редактировать файл public / index.php.
Измените APPLICATION_ENV на «разработка».

Это будет использовать настройки разработки в вашем файле application / configs / application.ini. Эти параметры определяют, следует ли подавлять ошибки.

6 голосов
/ 15 февраля 2013

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

Просто поместите следующую функцию в файл Bootstrap.php, чтобы включить исключения.

protected function _initErrorDisplay(){
        $frontController = Zend_Controller_Front::getInstance();
        $frontController->throwExceptions(true);
    }
1 голос
/ 19 августа 2014

Быстрое и грязное решение, если ни один из уже упомянутых методов не сработал (полезно для старой или плохо настроенной версии ZF):

  • найдите ErrorController вашего приложения.
  • помещает вызов функции debug_print_backtrace в начало метода init (с опцией die ())
1 голос
/ 20 декабря 2012

Откройте urproject / application / config и откройте application.ini
Измените вторую строку:

phpSettings.display_errors = 0 

до

phpSettings.display_errors = 1

Теперь будут отображаться ошибки.

0 голосов
/ 17 мая 2016

поместите эти строки в application / configs / config.php

error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 'on');
0 голосов
/ 17 марта 2015

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

 /var/log/apache2/error.log

У меня есть этот файл, открытый с помощью vim и введите: e, чтобы обновить, и G, чтобы перейти в конец страницы, чтобы увидеть самую последнюю ошибку, когда я получаю пустую страницу. Он сообщает вам время, когда произошла ошибка, сообщение и строку, так что это очень полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...