Модуль (ZfcUser) не может быть инициализирован
После установки ZfcBase и ZfcUser в моем приложении я получаю сообщение об ошибке:
'Module (ZfcUser) could not be initialized.' in Zend/ModuleManager/ModuleManager.php on line 140
Я установил ZfcBase и ZfcUser точно так же, как и местоположение, и ZfcBase загружается правильно.
Соответствующий код в ModuleManager.php:
/**
* Load a specific module by name.
*
* @param string $moduleName
* @throws Exception\RuntimeException
* @triggers loadModule.resolve
* @triggers loadModule
* @return mixed Module's Module class
*/
public function loadModule($moduleName)
{
if (isset($this->loadedModules[$moduleName])) {
return $this->loadedModules[$moduleName];
}
$event = ($this->loadFinished === false) ? clone $this->getEvent() : $this->getEvent();
$event->setModuleName($moduleName);
$this->loadFinished = false;
$result = $this->getEventManager()->trigger(ModuleEvent::EVENT_LOAD_MODULE_RESOLVE, $this, $event, function ($r) {
return (is_object($r));
});
$module = $result->last();
if (!is_object($module)) {
throw new Exception\RuntimeException(sprintf(
'Module (%s) could not be initialized.',
$moduleName
));
}
Как я смогу отладить эту проблему?
2 ответа
Как предложил Сэм в комментариях выше, я установил с Composer и ZfcUser работает нормально. Нет необходимости явно загружать ZfcBase. Вероятно, это была Doctrine или другая зависимость, которую я пропустил при установке вручную. Сначала я отказался от использования Composer, потому что он должен использоваться для каждого проекта. Но теперь я использую его для нескольких проектов, где я устанавливаю в общий каталог поставщика, и все проекты используют один и тот же файл index.php, ini_autoload.php и Composer autoload.php.
Я подозреваю, что вы установили ZfcUser, клонировав репозиторий Github и создав субмодуль git. Я столкнулся с проблемами при клонировании всего моего приложения (например, на новую машину), не клонируя каждый подмодуль отдельно каждый раз. Я столкнулся с той же ошибкой, что и ты.
Как уже говорили другие, используйте композитор, если у вас нет веских причин не делать этого.