2014-05-18 74 views
2

我使用PHP 5.5.12自动加载类“的Zend 装载机 ClassMapAutoLoader”没有加载

我的应用程序包含多个模块写的Zend Framework 2.3.1应用程序,并在每个模块的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 

任何想法,为什么?

+0

如果您将类映射自动加载器部分注释掉(只留下标准自动加载器),它会起作用吗? –

+0

我看到了和你一样的问题。当我尝试运行Doctrine-Module CLI来更新我的数据库模式时,出现这些错误。有趣的是,我没有在我的本地机器上看到这些错误,但是我一旦将所有内容移动到临时服务器上...... – spetz83

+0

发现此问题。在下面添加答案。 – spetz83

回答

0

Module.php自动加载与ZF2自动加载无关。

你如何安装ZF2?我认为你自己安装它,而不是使用作曲家?

在ZendSkeletonApp是一些例子,如何自动加载ZF2本身: https://github.com/zendframework/ZendSkeletonApplication/blob/master/init_autoloader.php

包括此部分在公开/ index.php文件 https://github.com/zendframework/ZendSkeletonApplication/blob/master/public/index.php#L14

+0

我使用作曲家安装了ZF2。我检查了,我的init_autoloader.php和index.php与git中的一样。 – ufk

+0

如果你使用composer安装它,那么应该是文件供应商/ autoload.php,如果它包含所有应该工作。 https://github.com/zendframework/ZendSkeletonApplication/blob/master/init_autoloader.php#L19-L22 – ThaDafinser

+0

当我从getAutoloaderConfig中删除Zend \ Loader \ ClassMapAutoLoader时,问题就消失了。 – ufk

4

我有同样的问题,因为你,我想通了是什么原因导致的问题:

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

需要是:

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

自动装载机中的小L。当我们不应该拥有时,我们都是骆驼式的。这为我清除了它。请让我知道这对你有没有用。