Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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