Отчет об ошибках в Zend Framework - PullRequest
11 голосов
/ 22 марта 2011

У меня проблемы с отчетом об ошибках в Zend Framework, сообщения об ошибках не отображаются в браузере, и я получаю сообщения об ошибках, например:

Произошла ошибка

Ошибка приложения

Однако я уже использую эти настройки в своем файле application.ini:

phpSettings.display_startup_errors = 1

phpSettings.display_errors = 1

phpSettings.track_errors = 1

phpSettings.error_reporting = E_ALL

Заранее спасибо: D

Ответы [ 2 ]

13 голосов
/ 22 марта 2011

Упомянутые вами настройки - это управление ошибками 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 голосов
/ 10 сентября 2014

У меня была та же проблема, которая в итоге была решена в 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.Изменить {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();

?>

Надеюсь, это будет работать и для вас.

...