Solucionado (ver solução)
Solucionado
(ver solução)
15
respostas

An exception was raised while creating "identity"; no instance returned

Prezados,

Quando clico em Cadastrar Produto ou Sair ocorre o erro abaixo.

An error occurred An error occurred during execution; please try again later. Additional information: Zend\ServiceManager\Exception\ServiceNotCreatedException File: C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:946 Message: An exception was raised while creating "identity"; no instance returned Stack trace:

#0 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\ServiceManager\AbstractPluginManager.php(284): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Array, 'identity', 'identity')

#1 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\ServiceManager\AbstractPluginManager.php(242): Zend\ServiceManager\AbstractPluginManager->createServiceViaCallback(Array, 'identity', 'identity')

#2 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(638): Zend\ServiceManager\AbstractPluginManager->createFromFactory('identity', 'identity')

#3 C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(598): Zend\ServiceManager\ServiceManager->doCreate('identity', 'identity')

15 respostas
solução!

Oi Henrique, tudo bom?

Dei uma pesquisada aqui e não encontrei nada diretamente relacionado a esse problema.

Qual versão do zend você está usando? O identity está presente no seu composer.json? O terminal que está rodando a aplicação foi executado como adminstrador?

Verifica esses pontos pra mim, assim consigo procurar o problema de forma mais assertiva =)

Qualquer coisa, você também pode subir seu projeto em algum lugar e compartilhar aqui com a gente. Assim, consigo rodar ele aqui e encontrar possíveis causas também.

Abraço

Bom dia André,

Estou usando Zend 2.4.13

PHP 7.2.9

$ php -version PHP 7.2.9 (cli) (built: Aug 15 2018 23:29:19) ( ZTS MSVC15 (Visual C++ 2017) x86 ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

Composer.json

{ "name": "zendframework/skeleton-application",

"description": "Skeleton Application for ZF2",
"license": "BSD-3-Clause",
"keywords": [
    "framework",
    "zf2"
],

"homepage": "http://framework.zend.com/",
"require": {
    "php": ">=5.3.3",
    "zendframework/zendframework": "~2.4.11",
    "zendframework/zftool": "dev-master",
    "doctrine/doctrine-orm-module": "0.7.*"
},
"require-dev": {
    "zendframework/zend-developer-tools": "1.0.*"
}

}

Estou executando o terminal como administrador

Opa, pela versão do seu zend parece que seu PHP está muito avançado. A compatibilidade do framework nessa versão é com o PHP:

"php": ">=5.3.3",

Tenta usar o php 5.6 que é mais próximo da compatibilidade =)

Muita coisa mudou na linguagem da versão 5.3 pra versão 7.2, manter a linguagem mais próxima da compatibibilidade do framework pode resolver esses problemas enigmáticos.

Qualquer problema é só falar.

Abraço!

André não acho na pagina do PHP a versão 5.6, você teria algum link que eu pudesse baixar e testar?

Oi Henrique, tudo bem? Você pode baixar qualquer versão do PHP no archive do site oficial, esse é o link: https://www.php.net/releases/

Eu pessoalmente prefiro usar ferramentas como o phprew que me permite instalar versões diferentes e trocar de versão dependendo do projeto. Se quiser dá uma olhada e verificar se é compatível com seu S.O, acho interessante: https://github.com/phpbrew/phpbrew

Baixei algumas versões, a partir de 5.4 e no link para windows ao baixar o arquivo nao tem o php.exe. Muito estranho

Não sei mais o que fazer.

Estou com o PHP 7.1.12 e está dando o erro abaixo

A página Index carrega, porém a de cadastro continua com o erro

Zend\ServiceManager\Exception\ServiceNotCreatedException File: C:\sistemas\Estoque\Skeleton-Application\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:946 Message: An exception was raised while creating "identity"; no instance returned

Encontrei versoes mais antigas do Xampp,

Vou testar

https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/

Prezados,

Consegui instalar o PHP 5.6.32, rodei o composer update e o Doctrine fez um downgrade

PHP 5.6.32 (cli) (built: Oct 25 2017 16:02:15) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Doctrine

$ composer update Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 0 installs, 1 update, 0 removals

  • Downgrading doctrine/inflector (v1.2.0 => v1.1.0): Downloading (connecting..Downloading (100%) Writing lock file Generating autoload files

A minha pasta está dentro do XAMPP/htdocs

Quando inicio o apache do xampp nao carrega a página.

O que está faltando para acessar a página?

Oi Henrique, não sei o que pode estar acontecendo. Não está dando nenhum erro pra você? Você consegue me disponibilizar seu projeto pra que eu teste aqui e tente encontrar o problema de forma mais efetiva?

Criei o link do projeto no DropBox

https://www.dropbox.com/s/tdptag16niuqeqf/Estoque.zip?dl=0

Estranho Henrique, eu tenho outro problema.

O erro que dá pra mim ao tentar abrir o localhost é:

Uncaught Zend\ServiceManager\Exception\ServiceNotFoundException: Zend\View\HelperPluginManager::createFromInvokable: failed retrieving "flashhelper(alias: flashHelper)" via invokable class "Estoque\View\Helper\FlashHelper"; class does not exist in /home/wandersonmaceds/Downloads/Estoque/Skeleton-Application/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php:195

Dá problema no autoloading... No seu caso é na criação do Entity. :(

Se a gente tem problemas diferentes, em ambientes parecidos, fica mais difícil de encontrar a raiz do problema :(

Realmente não tenho nem ideia do que possa estar acontecendo. Já mudei a versão do PHP e sempre gera algum erro.

Tá difícil terminar este curso.

Com certeza sem o Zend já estaria pronto a aplicação.

Oi Henrique, tudo bom?

Primeiramente, perdão pela demora no retorno. Mas o caso realmente tinha alguns pontos delicados.

Vou explicar o cenário no qual executei seu projetoe os problemas que encontrei.

Executei o projeto com a versão 7.2 do PHP mesmo e com o Mysql 5.7, ambos foram configurados em uma "máquina virtual" (docker), então garantindo o mesmo ambiente os resultados devem ser os mesmos independente do sistema operacional.

Primeiro, encontrei o mesmo problema que o Wanderson, do carregamento dos Helpers. Esse erro estava acontecendo porque segundo a PSR-0/PSR-4, devemos declarar a nossa estrutura de pasta com o mesmo nome que damos pros nossos namespaces. O zend segue esse padrão de autoload. No seu sistema operacional esse erro não acontece porque o Windows é case insensitive e tanto eu quanto o Wanderson executamos em sistemas operacionais Unix, onde essa realidade não se aplica.

Portanto a solução pra esse caso:

  • O nome da pasta "view" em module/Estoque/src/Estoque/view deve ser "View"

Depois de resolver esse erro, me deparei com outro erro de autoload. Mas, dessa vez o erro estava no carregamento dos relacionamentos OneToMany e ManyToOne do doctrine. O problema também estava na forma com que a declaração das anotações estavam escritas. A solução pra esse caso:

  • OnetoMany, na classe Categoria, deve ser OneToMany em pascal case (a mesma ideia se repete para ManyToOne na classe Produto. O PHP é case sensitive para a declaração das classes/anotações

Após arrumar as anotações, criei a primeira instância do banco de dados com o comando orm:schema-tool:create, e finalmente pude chegar no mesmo erro que você:

Zend\ServiceManager\Exception\ServiceNotCreatedException

An exception was raised while creating "identity"; no instance returned

Esse, tem a mesma causa dos outros dois. No arquivo Estoque/module.config.php na área de configuração de autenticação, temos credentialCallabel e deve ser credentialCallable. Realizando essa alteração tanto o logout quanto o formulário funcionam normalmente.

Além desses erros, também encontrei outros erros de sintaxe no meio do caminho.

Deixei tudo corrigido no meu github pra você poder baixar e comparar certinho.

https://github.com/andrechavesg/loja-zend-corrigida/tree/master/Skeleton-Application

(PS: nessa versão eu alterei a configuração de conexão com o banco de dados pra bater na minha "máquina virtual". Se você for baixar o zip e rodar ai, acho que vai precisar repassar aquela configuração do banco)

Nesse primeiro contato com o framework vale a pena gastar um tempo lendo a documentação do zend 2 e comparando com os processos que você está tentando realizar. Eu me apoiei bastante na documentação ao longo dessa jornada também =)

No nosso caso estamos usando o zend 2 mas no caso do zend 3 (ou qualquer outro framework) a ideia é a mesma. A documentação é sempre o melhor norte que a gente pode ter.

Abraço