Как отобразить ошибки исключений, выданные Zend Framework - PullRequest
8 голосов
/ 02 мая 2010

Привет, ребята, я работаю с Zend Framework и просто ненавижу тот факт, что мне кажется, что я сталкиваюсь с сотнями ошибок исключений, например, если я пытаюсь ссылаться на несуществующее свойство объекта, мое приложение просто умирает и падает Однако я понятия не имею, где можно увидеть эти ошибки или как отображать их на экране. Я установил для ошибок отображения значение true, а для отчетов об ошибках - E_ALL, но когда выдается ошибка, все, что я вижу, - это пустая страница, отображаемая только до тех пор, пока ошибка не возникла или возникла исключительная ситуация.

Помогите, пожалуйста, мои часы отладки тянут

Ответы [ 3 ]

4 голосов
/ 03 мая 2010

Каково значение переменной среды APPLICATION_ENV.

Стандартный public / index.php в приложении ZF делает следующее:

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

Это означает, что если APPLICATION_ENV не установлен, среда устанавливается как «производственная». Если вы посмотрите на файл application.ini, то увидите, что среда подавляет ошибки, если среда является производственной.

Конечно, вы разрабатываете, поэтому вы хотите использовать среду разработки.

Если вы работаете в Apache / mod_php, вы можете установить это в файле httpd.conf или в файле .htaccess:

SetEnv APPLICATION_ENV development

Или вы всегда можете стать уродливым и взломать ваш public / index.php:

// Define application environment

/*defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));*/

// Ugly hack because I'm too lazy to properly set up my environment.
define('APPLICATION_ENV','development');
2 голосов
/ 15 мая 2010

Если вы создаете скелет приложения с помощью Zend Tool, у вас обычно будет контроллер ошибок, который будет отлавливать ошибки времени выполнения и отображать их. Вы захотите последовать совету Тимдева до SetEnv APPLICATION_ENV development, а затем в вашем application / configs / application.ini:

[development : production]

; This section defines config parameters loaded when the APPLICATION_ENV directive
; is set to 'development' - undefined parameters are inherited from the production
; section.

; show errors and exceptions during development
 phpSettings.display_startup_errors = 1
 phpSettings.display_errors = 1
 resources.frontController.params.displayExceptions = 1
1 голос
/ 02 мая 2010

Ссылка на несуществующее свойство - это ошибка в PHP, а не исключение. Ошибки обычно выводятся в html, если вы включили display_errors в своем php.ini. Но будьте осторожны: они могут также встречаться в невидимых HTML-тегах, таких как:

<div style="display:none"><? echo $object->nonexistant?> ...

... поэтому вам нужно проверить вывод HTML вашей страницы ( CTRL-U в Firefox) и прокрутить до конца

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