An exception was raised while creating "Doctrine\ORM\EntityManager"; no instance returned

829 views
Skip to first unread message

diogo.domanski

unread,
Mar 24, 2014, 7:11:09 PM3/24/14
to zfbr...@googlegroups.com
Olá pessoal,

Após eu atualizar meu projeto usando o comando php composer.php update, ele parou de funcionar. Levei um tempão para identificar o motivo do problema, até que descobri que era algo relacionado ao ServiceManager.

No meu projeto há um módulo chamado Acl. No seu arquivo Module.php há uma configuração de serviço que cria uma instância de \Acl\Service\Privilege que depende de \Doctrine\ORM\EntityManager. Este serviço é definido no método getServiceConfig() do Module.php:

namespace Acl;

use Zend\Mvc\ModuleRouteListener,
    Zend\Mvc\MvcEvent;

class Module
{
    ...

    public function getServiceConfig()
    {
        return array(
            'factories' => array(

                ...

                'Acl\Service\Privilege' => function($sm) {
                    return new Service\Privilege($sm->get('Doctrine\ORM\EntityManager'));
                },
            )
        );
    }
}


No método indexAction() do meu AuthController eu instancio o Acl\Service\Privilege através do ServiceLocator:

class AuthController extends AbstractActionController {

    public function indexAction() {
        ...

        $privilegeService = $this->getServiceLocator()->get('Acl\Service\Privilege);

        ...
    }

    ....
}


Neste ponto uma exceção é gerada

object(stdClass)#369 (5) {
  ["__CLASS__"]=>
  string(56) "Zend\ServiceManager\Exception\ServiceNotCreatedException"
  ["message"]=>
  string(89) "An exception was raised while creating "Doctrine\ORM\EntityManager"; no instance returned"
  ["code"]=>
  int(0)
  ["file"]=>
  string(109) "/my_project_path/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php"
  ["line"]=>
  int(909)
}

Anexo está o resultado da execução do comando \Doctrine\Common\Util\Debug::dump($sm) se eu o colocar no início da função que define Acl\Service\Privilege no método getServiceConfig
.

A sequência de carga dos módulos no arquivo application.config.php é a seguinte
:

return array(
// This should be an array of module namespaces used in the application.
'modules' => array(
//'ZendDeveloperTools',
'DoctrineModule',
'DoctrineORMModule',
'SlmLocale',
//'DluTwBootstrap',
'Acra',
'MOBBase',
'Acl',
'User',
'System',
'Api',

'Relatorio',

'Application',
),


...

O conteúdo do arquivo composer.json é o seguinte

{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "license": "BSD-3-Clause",
    "keywords": [
        "framework",
        "zf2"
    ],
    "homepage": "http://framework.zend.com/",
     "minimum-stability": "dev",
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.*@stable",
    "zendframework/zend-developer-tools": "dev-master",
    "bjyoungblood/bjy-profiler": "dev-master",
    "doctrine/doctrine-orm-module": "dev-master",
    "hounddog/doctrine-data-fixture-module": "dev-master",
    "phpunit/phpunit": "3.7.*",
    "slm/locale": "dev-master",
    "dlu/dlutwbootstrap": "dev-master"
    }
}

Sendo que a versão atual do ZF é 2.3.0 e do Doctrine é 2.5

Alguém já passou por e/ou sabe como resolver este problema?

Agradeço desde já

Diogo

diogo.domanski

unread,
Mar 24, 2014, 7:14:39 PM3/24/14
to zfbr...@googlegroups.com
Ficou faltando o dump do ServiceManager
servicemanager_dump.txt

diogo.domanski

unread,
Mar 25, 2014, 9:32:33 AM3/25/14
to zfbr...@googlegroups.com
Bom dia Pessoal,

Fiz impressão de toda a cadeia da exceção (através do método getPrevious() da Exception) e descobri que o problema era o fato de eu estar tentando sobrescrever a função DATE_DIFF no DQL do Doctrine. Simplesmente descartei isto do código-fonte e o problema foi resolvido,

Contudo, um novo erro passou a aparecer:

"PHP message: PHP Fatal error:  Uncaught exception 'Zend\Di\Exception\RuntimeException' with message 'Invalid instantiator of type "NULL" for "Zend\I18n\Translator\TranslatorInterface".' in /var/www/plataforma_gta_web/vendor/zendframework/zendframework/library/Zend/Di/Di.php:311

Utilizei a mesma estratégia da exceção anterior e cheguei no seguinte

object(stdClass)#446 (5) {
  ["__CLASS__"]=>
  string(56) "Zend\ServiceManager\Exception\ServiceNotCreatedException"
  ["message"]=>
  string(76) "An exception was raised while creating "MvcTranslator"; no instance returned"
  ["code"]=>
  int(0)
  ["file"]=>
  string(109) "/var/www/plataforma_gta_web/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php"
  ["line"]=>
  int(909)
}
object(stdClass)#446 (5) {
  ["__CLASS__"]=>
  string(56) "Zend\ServiceManager\Exception\ServiceNotCreatedException"
  ["message"]=>
  string(139) "An abstract factory could not create an instance of zendi18ntranslatortranslatorinterface(alias: Zend\I18n\Translator\TranslatorInterface)."
  ["code"]=>
  int(0)
  ["file"]=>
  string(109) "/var/www/plataforma_gta_web/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php"
  ["line"]=>
  int(1070)
}
object(stdClass)#446 (5) {
  ["__CLASS__"]=>
  string(56) "Zend\ServiceManager\Exception\ServiceNotCreatedException"
  ["message"]=>
  string(103) "An exception was raised while creating "Zend\I18n\Translator\TranslatorInterface"; no instance returned"
  ["code"]=>
  int(0)
  ["file"]=>
  string(109) "/var/www/plataforma_gta_web/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php"
  ["line"]=>
  int(909)
}
object(stdClass)#446 (5) {
  ["__CLASS__"]=>
  string(34) "Zend\Di\Exception\RuntimeException"
  ["message"]=>
  string(83) "Invalid instantiator of type "NULL" for "Zend\I18n\Translator\TranslatorInterface"."
  ["code"]=>
  int(0)
  ["file"]=>
  string(85) "/var/www/plataforma_gta_web/vendor/zendframework/zendframework/library/Zend/Di/Di.php"
  ["line"]=>
  int(311)
}

Alguém já passou por este problema e/ou tem alguma ideia de como resolve-lo?

Agradeço desde já

diogo.domanski

unread,
Mar 25, 2014, 12:25:19 PM3/25/14
to zfbr...@googlegroups.com
Problema resolvido. Quem quiser, pode acompanhar a evolução da solução do problema neste outro post https://groups.google.com/d/topic/doctrine-user/yDWky4vRYPw/discussion.

Agradeço a todos pela ajuda.
Reply all
Reply to author
Forward
0 new messages