У меня возникли проблемы с сообщениями об ошибках в zend framework, сообщения об ошибках не отображаются в браузере, и я получаю ошибку следующим образом:
Произошла ошибка
Ошибка приложения
- Предупреждение PHP: заголовки уже отправлены в Unknown
- В чем смысл E_ALL | E_STRICT, если это то же значение, что и E_ALL?
- E_NOTICE? == E_DEBUG, избегая isset () и @ с более сложным error_handler
- PHP не будет показывать никаких ошибок
- Какова рекомендуемая установка error_reporting () для разработки? Как насчет E_STRICT?
- Как избежать isset () и empty ()
Однако я уже использую эту конфигурацию в файле application.ini:
phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 phpSettings.track_errors = 1 phpSettings.error_reporting = E_ALL
Заранее спасибо
Упомянутые вами настройки – это управление ошибками php, в то время как то, что вы ищете, действительно является ошибкой Zend и отчетами об исключениях. Как упоминалось в kjy112, похоже, что Zend по умолчанию работает с производственной средой, которая не отображает никаких сообщений об ошибках.
Быстрый запуск Zend может быть самым быстрым способом помочь вам ускорить это: http://framework.zend.com/manual/en/zend.application.quick-start.html
В принципе, вы можете либо установить определение внутри вашего файла index.php (не самый чистый), либо я рекомендую установить его в вашей конфигурации apache, а затем прочитать его из файла index.php. Я использую что-то подобное в моем Bootstrap:
if (!defined('APPLICATION_ENVIRONMENT')) { if (getenv('APPLICATION_ENVIRONMENT')) { define('APPLICATION_ENVIRONMENT', getenv('APPLICATION_ENVIRONMENT')); } else { define('APPLICATION_ENVIRONMENT', 'production'); } }
Представление Zend error.phtml по умолчанию имеет нечто похожее на следующий код, который блокирует отображение в рабочей среде:
<?php if ('production' !== $this->env): ?> <div id="error"> <p> <ul class="errorList"> <li> <h3><?php echo $this->message ?></h3> </li> <li> <h4>Exception information:</h4> <p><?php echo $this->exception->getMessage() ?></p> </li> <li> <h4>Stack trace:</h4> <p><?php echo $this->exception->getTraceAsString() ?></p> </li> <li> <h4>Request Parameters:</h4> <p><?php var_dump($this->request->getParams()) ?></p> </li> </ul> </p> </div> <?php endif ?>
У меня была та же проблема, которая была в конечном итоге разобрана в 2 этапа:
1.Откройте {project name}/application/configs/application.ini
и в конце добавьте следующие строки:
[development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1 settings.debug.enabled = 1
2.Modify {project name}/public/index.php
<?php // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // Typically, you will also want to add your library/ directory // to the include_path, particularly if it contains your ZF installed set_include_path(implode(PATH_SEPARATOR, array( dirname(dirname(__FILE__)) . '/library', get_include_path() ))); /** * Zend_Application */ require_once 'Zend/Application.php'; // Create application, bootstrap, and run $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); $application->bootstrap()->run(); ?>
Надеюсь, это сработает и для вас.