ZF3 — модуль, требующий композитора — & gt; модуль не может быть инициализирован

Я работаю со скелет-приложением в качестве базы, используя настройку Vagrant / Composer. После первоначальной установки я понял, что мне понадобится модуль LDAP. Я тогда побежал composer require zendframework/zend-ldap который успешно прошел, и я нашел файлы в ~/vendor/zendframework/zend-ldap,

Вопрос в том, когда я добавляю 'Zend\Ldap' к моему ~/config/modules.config.php Я сталкиваюсь со следующей ошибкой:

Fatal error: Uncaught Zend\ModuleManager\Exception\RuntimeException: Module (Zend\Ldap) could not be initialized. in /var/www/vendor/zendframework/zend-modulemanager/src/ModuleManager.php:203 Stack trace: #0 /var/www/vendor/zendframework/zend-modulemanager/src/ModuleManager.php(175): Zend\ModuleManager\ModuleManager->loadModuleByName(Object(Zend\ModuleManager\ModuleEvent))
#1 /var/www/vendor/zendframework/zend-modulemanager/src/ModuleManager.php(97): Zend\ModuleManager\ModuleManager->loadModule('Zend\\Ldap') #2 /var/www/vendor/zendframework/zend-eventmanager/src/EventManager.php(322): Zend\ModuleManager\ModuleManager->onLoadModules(Object(Zend\ModuleManager\ModuleEvent))
#3 /var/www/vendor/zendframework/zend-eventmanager/src/EventManager.php(171): Zend\EventManager\EventManager->triggerListeners(Object(Zend\ModuleManager\ModuleEvent))
#4 /var/www/vendor/zendframework/zend-modulemanager/src/ModuleManager.php(120): Zend\EventManager\EventManager->triggerEvent(Object(Zend\ModuleManager\ModuleEvent))
#5 /var/www/vendor/zendfr in /var/www/vendor/zendframework/zend-modulemanager/src/ModuleManager.php on line 203

~/config/modules.config.php файл:

/**
* List of enabled modules for this application.
*
* This should be an array of module namespaces used in the application.
*/
return [
'Zend\Session',
'Zend\Mvc\Plugin\Prg',
'Zend\Mvc\Plugin\Identity',
'Zend\Mvc\Plugin\FlashMessenger',
'Zend\Mvc\Plugin\FilePrg',
'Zend\Log',
'Zend\Form',
'Zend\Db',
'Zend\Router',
'Zend\Validator',
'Zend\Ldap',    // All is well if this is commented out
'Application',

];

и ~/config/application.config.php файл:

/**
* If you need an environment-specific system or application configuration,
* there is an example in the documentation
* @see https://docs.zendframework.com/tutorials/advanced-config/#environment-specific-system-configuration
* @see https://docs.zendframework.com/tutorials/advanced-config/#environment-specific-application-configuration
*/
return [
// Retrieve list of modules used in this application.
'modules' => require __DIR__ . '/modules.config.php',

// These are various options for the listeners attached to the ModuleManager
'module_listener_options' => [
// This should be an array of paths in which modules reside.
// If a string key is provided, the listener will consider that a module
// namespace, the value of that key the specific path to that module's
// Module class.
'module_paths' => [
'./module',
'./vendor',
],

// An array of paths from which to glob configuration files after
// modules are loaded. These effectively override configuration
// provided by modules themselves. Paths may use GLOB_BRACE notation.
'config_glob_paths' => [
realpath(__DIR__) . '/autoload/{{,*.}global,{,*.}local}.php',
],

// Whether or not to enable a configuration cache.
// If enabled, the merged configuration will be cached and used in
// subsequent requests.
'config_cache_enabled' => true,

// The key used to create the configuration cache file name.
'config_cache_key' => 'application.config.cache',

// Whether or not to enable a module class map cache.
// If enabled, creates a module class map cache which will be used
// by in future requests, to reduce the autoloading process.
'module_map_cache_enabled' => true,

// The key used to create the class map cache file name.
'module_map_cache_key' => 'application.module.cache',

// The path in which to cache merged configuration.
'cache_dir' => 'data/cache/',

// Whether or not to enable modules dependency checking.
// Enabled by default, prevents usage of modules that depend on other modules
// that weren't loaded.
// 'check_dependencies' => true,
],

// Used to create an own service manager. May contain one or more child arrays.
// 'service_listener_options' => [
//     [
//         'service_manager' => $stringServiceManagerName,
//         'config_key'      => $stringConfigKey,
//         'interface'       => $stringOptionalInterface,
//         'method'          => $stringRequiredMethodName,
//     ],
// ],

// Initial configuration with which to seed the ServiceManager.
// Should be compatible with Zend\ServiceManager\Config.
// 'service_manager' => [],
];

Я попытался удалить папку кэша, работает composer update, перезапустив Vagrant, добавив полный путь к 'modules_path' массив в application.config.php но это всегда одна и та же ошибка. Интересно, я сталкиваюсь с той же проблемой с 'Zend\View' который был включен из установки, но такой модуль, как 'Zend\Session' можно добавить к modules.config.php файл без проблем (все они находятся в vendor/zendframework каталог)

Кто-нибудь может указать мне правильное направление для решения этой проблемы?

0

Решение

Zend\Ldap является одним из компонентов ZF. Как это не имеет Module.php в его /src каталог, который является обязательным для модуля. Таким образом, вам не нужно инициализировать как другие модули через modules.config.php использовать его в вашем приложении.

Этот компонент не включен, как требуется при установке ZF по умолчанию. Поэтому, если вы хотите использовать какие-либо компоненты, вы должны добавить их в автозагрузчик. Как только вы добавили такой компонент, как этот composer require zendframework/zend-ldap в вашем проекте вы сможете использовать его.

Проверьте этот ответ а также Эта проблема быть ясно!

2

Другие решения

У zend-ldap нет файла src / Module.php, поэтому вы не можете добавить его как модуль. Кроме того, он не включает стандартную фабрику, поэтому вам нужно написать ее самостоятельно. Больше информации о том, как его настроить:

https://zendframework.github.io/zend-ldap/intro/

2

Как уже отмечалось, Zend-LDAP не обеспечивает Module учебный класс; это просто компонент, который обеспечивает функциональность. У него нет сервисных определений, поэтому нет Module учебный класс.

Следует отметить две вещи:

  • Установите zendframework / zend-component-installer в своем приложении: composer require --dev zendframework/zend-component-installer, Когда вы это делаете, каждый раз, когда вы добавляете в приложение другой компонент, который Module класс, он подскажет вам, спрашивая, хотите ли вы добавить его в конфигурацию вашего приложения. (zend-component-installer устанавливается по умолчанию, если вы запускаете свой проект с помощью приложения zendframework / skeleton-application.)
  • Мы недавно открыли наш Форумы Zend Framework; рассмотрите возможность направления ваших вопросов ZF туда в будущем, чтобы сделать ответы легко доступными для пользователей ZF.
2

Является zend-ldap входит в ваш проект? Если не запустить в вашем терминале

composer require zendframework/zend-ldap

И вы можете отключить кэширование в процессе разработки, включив режим разработки: composer development-enable

1
По вопросам рекламы [email protected]