Intereting Posts
Как запустить Eloquent Manager в Slim 3.1 Инъекции зависимостей Сбор пользовательских типов сообщений через теги Laravel, почему я не могу запустить успешную миграцию таблицы создания с немного отличающимся написанием имени таблицы? Прыжок во времени во время работы PHP () Когда я использую постоянную PHP «PHP_EOL»? html <a> активировать при нажатии на ввод нажатой PHP / MySQL Сортировать по столбцу в другой таблице Как использовать одиночную кавычку внутри эха, использующего одиночную кавычку Не удалось подключиться к базе данных mySQL из Android ZendFramework – Как создать optgroup и там вариант с помощью помощников вида? Как выполнить итерацию результата mysqli_fetch_array ()? Как использовать драйвер MySQLi в Codeigniter Справка по импорту csv PHP – Десятичные значения становятся округленными значениями при вставке в таблицу header.php | Изменить позицию поиска Как разделять слова, используя php?

Не удается получить службу Logger в ZF2

Я боролся с проблемой в течение нескольких дней, но до сих пор не понимаю, что с ней не так.

Вот мой сегмент конфигурации в application.config.php:

// Initial configuration with which to seed the ServiceManager. // Should be compatible with Zend\ServiceManager\Config. 'service_manager' => array( 'abstract_factories' => array( 'Zend\Log\LoggerAbstractServiceFactory', 'Zend\Cache\Service\StorageCacheAbstractServiceFactory', ) ), 'log' => array( 'Log\App' => array( 'writers' => array( array( 'name' => 'stream', 'priority' => 1000, 'options' => array( 'stream' => 'data/logs/app.log' ) ) ) ) ) 

и я пытаюсь получить экземпляр службы в своем контроллере:

 $logger = $this->getServiceLocator()->get('Log\\App'); 

и исключение:

 An error occurred An error occurred during execution; please try again later. Additional information: Zend\ServiceManager\Exception\ServiceNotFoundException File: /var/openresty/html/skeleton-zf2/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:529 Message: Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for Log\App 

обновлено Спасибо за помощь ocramius

Перемещаю сегмент на module.config.php, и на этот раз он исключил исключение:

 Zend\ServiceManager\Exception\ServiceNotCreatedException File: /var/openresty/html/skeleton-zf2/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:1070 Message: An abstract factory could not create an instance of applicationweb(alias: Application\Web). 

Как обсуждалось в IRC, проблемы здесь были 2:

  • файл, в котором у вас была такая конфигурация, был config/application.config.php (который не является модульной / объединенной конфигурацией, а тем, что вводится в эксплуатацию "ApplicationConfig" )
  • абстрактная фабрика не могла создать экземпляр службы из-за исключения. Чтобы отладить исключение, вы можете сделать что-то вроде следующего:
 try { // ... $logger = $this->getServiceLocator()->get('Log\\App'); // ... } catch (\Exception $e) { do { var_dump($e->getMessage()); } while ($e = $e->getPrevious()); } 

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