zf2 Zend \ ServiceManager \ Exception \ ServiceNotCreatedException

时间:2016-07-20 08:01:50

标签: exception service zend-framework2

我花了半天的时间来解决这个问题但没有成功。

我在EC2进行设置,centos 6/64位。已安装LAMP。在另一个主机上,我的zf2解决方案工作正常,所以我也在安装的php模块中搜索了问题(最后列出)。

当zf2尝试获取我的自定义服务的实例时,也会发生此错误,同时使用wasabi邮件。

\ Zend的\配置\ application.config.php

'config_glob_paths'    => array(
        './config/autoload/{,*.}{global,local}.php',
    ),

\ Zend的\配置\自动加载\ global.php

     'service_manager' => array(
     'factories' => array(
        'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',

        'Zend\CustomLogger' => function ($sm) {
            $auth = $sm->get('zfcuser_auth_service');

            $customLogger = new \Application\Service\CustomLogger(
                    $sm->get('Request'),
                    $sm->get('ZendLog'),
                    new \Zend\Session\SessionManager(),
                    $auth->getIdentity(), // $user
                    $sm->get('Mail'));

            return $customLogger;
        },

控制器

<?php 
namespace Foo\Controller;
    use Zend\Mvc\Controller\AbstractActionController;
    use Zend\View\Model\ViewModel;
    use Doctrine\ORM\EntityManager;
    use MyProject\Proxies\__CG__\OtherProject\Proxies\__CG__\stdClass;

    class FooController extends AbstractActionController
    {
        protected $customLogger;

        private function getCustomLogger()
        {
            if (null === $this->customLogger) {
                $this->customLogger = $this->getServiceLocator()->get('Zend\CustomLogger');
            }
            return $this->customLogger;
        }

        public function indexAction()
        {
            $this->getCustomLogger();

            $this->customLogger->controllerLog("ENTER IN Foo\Controller\FooController\index", "info");


            // .... other code
        }
    }

错误

Zend\ServiceManager\Exception\ServiceNotCreatedException
File:
/var/www/solutions/mysolution/zend/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:930
Message:
An exception was raised while creating "Zend\CustomLogger"; no instance returned

安装了PHP模块

bz2.so       curl.so  fileinfo.so  iconv.so  mbstring.so        mysqlnd.so      pdo_sqlite.so  shmop.so      sqlite3.so  sysvshm.so    xmlreader.so  xsl.so
calendar.so  dom.so   ftp.so       intl.so   mysqlnd_mysqli.so  pdo_mysqlnd.so  phar.so        simplexml.so  sysvmsg.so  tokenizer.so  xml.so        zip.so
ctype.so     exif.so  gettext.so   json.so   mysqlnd_mysql.so   pdo.so          posix.so       sockets.so    sysvsem.so  wddx.so       xmlwriter.so

在PHP ini中启用扩展

extension=/usr/lib64/php/5.5/modules/php_bz2.so
extension=/usr/lib64/php/5.5/modules/php_curl.so
extension=/usr/lib64/php/5.5/modules/php_fileinfo.so
extension=/usr/lib64/php/5.5/modules/php_gd2.so
extension=/usr/lib64/php/5.5/modules/php_intl.so
extension=/usr/lib64/php/5.5/modules/php_mbstring.so
extension=/usr/lib64/php/5.5/modules/php_mysql.so
extension=/usr/lib64/php/5.5/modules/php_mysqli.so
extension=/usr/lib64/php/5.5/modules/php_openssl.so
extension=/usr/lib64/php/5.5/modules/php_pdo_mysql.so
extension=/usr/lib64/php/5.5/modules/php_soap.so
extension=/usr/lib64/php/5.5/modules/php_xmlrpc.so
extension=/usr/lib64/php/5.5/modules/php_xsl.so

1 个答案:

答案 0 :(得分:1)

如此简单的解决方案...对日志目录和其他一些目录的权限是错误的。恢复目录上正确的权限,用户和组(例如数据/日志,数据/缓存...)