2013-03-10 5 views
9

Каждый раз, когда я получаю сообщение об ошибке в Zend Framework 2, я получаю всего 500 ошибок внутреннего сервера и должен искать в журнале ошибок Zend Server. Я попытался положить это на мой конфигурационный файл автозагрузки// local.php, но он не работает:Как включить отчет об ошибках PHP в Zend Framework 2?

return array(
    'phpSettings' => array(
     'display_startup_errors' => true, 
     'display_errors' => true, 
     ), 
); 

ответ

8

Там нет встроенной поддержки для этого в ZF2 (AFAIK). Вы бы должны либо установить их в php.ini себя, или установить их в index.php

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', true); 

Если вы действительно хотите, чтобы иметь возможность поставлять их в качестве параметров конфигурации, вы можете сохранить то, что у вас есть и сделать что в модуле начальной загрузки, получить их от конфигурации, и вызовите ini_set() на каждой паре ключей значение

public function onBootstrap(EventInterface $e) { 
    $app = $e->getApplication(); 
    $sm = $app->getServiceManager(); 
    $config = $sm->get('Config'); 
    $phpSettings = isset($config['phpSettings']) ? $config['phpSettings'] : array(); 
    if(!empty($phpSettings)) { 
     foreach($phpSettings as $key => $value) { 
      ini_set($key, $value); 
     } 
    } 
} 

Edit: а @akond справедливо указывает в комментариях, вы можете просто добавить ini_set строки local.php, которые является лучшим решением.

+3

Нет необходимости в этом длинном коде onBoostrap. Он мог просто поместить error_reporting в сам файл конфигурации, так как это файл PHP. – akond

+0

@akond +1 вы совершенно правы, это лучший вариант, здесь есть код начальной загрузки, чтобы продемонстрировать, как сделать то, что работает OP. – Crisp

+0

Это помогло, спасибо :) –

6

Чтобы упростить настройку phpSettings в вашем приложении ZF2, вы должны рассмотреть возможность использования DluPhpSettings.

С помощью этого модуля вы можете настроить параметры для каждой среды у вас есть:

/* Local application configuration in /config/autoload/phpsettings.local.php */ 
<?php 
return array(
    'phpSettings' => array(
     'display_startup_errors'  => false, 
     'display_errors'    => false, 
     'max_execution_time'   => 60, 
     'date.timezone'     => 'Europe/Prague', 
     'mbstring.internal_encoding' => 'UTF-8', 
    ), 
); 

Посмотрите this blog post для получения дополнительной информации тоже!

Смежные вопросы