Класс автозагрузчика Zend\Loader\ClassMapAutoLoader не загружен

Я пишу приложение Zend Framework 2.3.1, используя PHP 5.5.12.

Мое приложение содержит несколько модулей, и в каждом модуле Module.php у меня есть

public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\ClassMapAutoLoader' => array(
            __DIR__ . '/autoload_classmap.php'
        ),
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
            ),
        ),
    );
}

это единственный признак, который я видел, связанный с ClassMapAutoLoader.

когда я пытаюсь запустить приложение, я получаю:

Fatal error: Uncaught exception 'Zend\Loader\Exception\InvalidArgumentException' with message 'Autoloader class "Zend\Loader\ClassMapAutoLoader" not loaded' in /mnt/storage/home/ufk/work-projects/global-logic/project/xpogames/vendor/zendframework/zendframework/library/Zend/Loader/AutoloaderFactory.php on line 85

есть идеи почему?


person ufk    schedule 18.05.2014    source источник
comment
Будет ли это работать, если вы закомментируете раздел автозагрузчика карты классов (оставив только стандартный автозагрузчик)?   -  person Tim Fountain    schedule 19.05.2014
comment
Я вижу ту же проблему, что и вы. Я получаю эти ошибки, когда пытаюсь запустить интерфейс командной строки Doctrine-Module для обновления схемы моей базы данных. Самое смешное, что я не получаю эти ошибки на своей локальной машине, но они возникают, когда я перемещаю все на промежуточный сервер...   -  person spetz83    schedule 14.10.2014
comment
Нашел проблему. Добавление ответа ниже.   -  person spetz83    schedule 15.10.2014


Ответы (2)


У меня была та же проблема, что и у вас, и я понял, в чем причина проблемы:

'Zend\Loader\ClassMapAutoLoader' => array(
        __DIR__ . '/autoload_classmap.php'
    ),

Должно быть:

'Zend\Loader\ClassMapAutoloader' => array(
        __DIR__ . '/autoload_classmap.php'
    ),

Маленькая буква L в автозагрузчике. Мы оба верблюжье дело, когда мы не должны были. Это прояснило это для меня. Дайте мне знать, если это работает для вас.

person spetz83    schedule 14.10.2014

Автозагрузка Module.php не имеет ничего общего с автозагрузкой ZF2.

Как ты установил ZF2? Я думаю, вы установили его самостоятельно, а не использовали композитор?

В ZendSkeletonApp есть несколько примеров того, как автоматически загружать ZF2: https://github.com/zendframework/ZendSkeletonApplication/blob/master/init_autoloader.php

Включите эту часть в свой файл public/index.php https://github.com/zendframework/ZendSkeletonApplication/blob/master/public/index.php#L14

person ThaDafinser    schedule 19.05.2014
comment
Я установил ZF2 с помощью composer. я проверил, и мои init_autoloader.php и index.php такие же, как в git. - person ufk; 19.05.2014
comment
Если вы установили его с композитором, где должен быть файл vendor/autoload.php, и если он включен, все должно работать. github.com/zendframework/ZendSkeletonApplication/blob/master/ - person ThaDafinser; 20.05.2014
comment
когда я удаляю Zend\Loader\ClassMapAutoLoader из getAutoloaderConfig, проблема исчезает. - person ufk; 28.05.2014