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

Erro ao executar projeto inicial

Olá!

Estou com esse problema à alguns dias. Revirei fóruns já e a documentação, mas talvez eu não tenha pesquisado da maneira incorreta sei lá.

Esse é o projeto inicial, sem nenhuma alteração e fora do git.

Aparentemente aconteceram algumas atualizações desde a data deste video. Tentei realizar algumas que encontrei, como por exemplo a da class Setup, para a ORMSetup..(mas não nesse código que estou mostrando o print, esse é o original)

Enfim, tentei rodar vários comandos do composer para atulização ou instalação de novos pacotes, mas sempre dá o mesmo erro.

Não consegui encontrar atualização para a função createHelperSet também, que vem no arquivo cli-config.

Quero muito entender o que tanto eu preciso fazer, quais arquivos atualizar, como atualizar e porque ta acontecendo esse erro.

O código é o mesmo do projeto original...

Erro e codigoEle inicia o localhost corretamente, apenas dá o erro quando tento acessar a página listar cursos

Também já tentei acessar, com localhost:8080/public/listar-cursos.php e com localhost:8080/listar-cursos.php

E já subi o servidor sem privar para a pasta public: php -S localhost:8080 e também php -S localhost:8080 -t public

Página web erro 500

Acredito que a resposta está aqui, mas estou com dificuldade para interpretar, também não tenho certeza..

https://www.doctrine-project.org/projects/doctrine-orm/en/2.13/reference/tools.html

5 respostas

Elton, vai no teu index.php e vai debugando linha por linha utilizando o var_dump e die pra ver onde teu código está parando de funcionar.

Eu imagino que o seu problema esteja relacionado a sua versão de php ou algum pacote que deu erro na hora de instalar.

Verifica sua versão do php rodando o comando php -v.

Deve estar na versão 7.2 pra ficar igual a do curso.

Vai printar algo semelhante a isto:

PHP 7.2.34 (cli) (built: Dec 11 2020 10:56:30) ( NTS )

Também podes tentar apagar seu composer.lock e rodar composer install novamente.

Acompanhe o log para verificar se não acontece nenhum erro na hora da instalação, pode colar o log aqui tb pra gente.

Eu fiz tudo no docker pra rodar o servidor com as versões iguais do curso e não tive nenhum problema, exceto aquele erro que o Vinicius tb teve de precisar gerar os proxies q é relacionado ao doctrine mesmo.

Fiz um repositório disponibilizando o Docker que eu montei: https://github.com/mauriciomueller/aluramvc

Baixei novamente o projeto inicial Na verdade formatei o computador kk.. Reinstalei o composer e os pacotes, descomentei o pdo_sqlite no php.ini

Aparentemente o erro mudou, acho que você tinha razão sobre o erro de instalação dos pacotes.

Mas agora está com erro em várias classes, não sei se é configuração do autoload, ou o que está acontecendo, segue o erro ao tentar acessar listar-cursos.php

PHP Fatal error: Uncaught Doctrine\Persistence\Mapping\MappingException: Class 'Alura\Cursos\Entity\Curso' does not exist in C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\MappingException.php:80Stack trace:

#0 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\RuntimeReflectionService.php(39): Doctrine\Persistence\Mapping\MappingException::nonExistingClass()

#1 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\AbstractClassMetadataFactory.php(283): Doctrine\Persistence\Mapping\RuntimeReflectionService->getParentClasses()

#2 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\AbstractClassMetadataFactory.php(318): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getParentClasses()

#3 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\AbstractClassMetadataFactory.php(207): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata()

#4 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php(318): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor()

#5 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php(32): Doctrine\ORM\EntityManager->getClassMetadata()

#6 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php(825): Doctrine\ORM\Repository\DefaultRepositoryFactory->getRepository()

#7 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\public\listar-cursos.php(6): Doctrine\ORM\EntityManager->getRepository()

#8 {main} thrown in C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\MappingException.php on line 80 [Mon Dec 26 18:50:34 2022] [::1]:49977 [500]: GET /listar-cursos.php - Uncaught Doctrine\Persistence\Mapping\MappingException: Class 'Alura\Cursos\Entity\Curso' does not exist in C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\MappingException.php:80 Stack trace:

#0 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\RuntimeReflectionService.php(39): Doctrine\Persistence\Mapping\MappingException::nonExistingClass()

#1 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\AbstractClassMetadataFactory.php(283): Doctrine\Persistence\Mapping\RuntimeReflectionService->getParentClasses()

#2 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\AbstractClassMetadataFactory.php(318): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getParentClasses()

#3 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\AbstractClassMetadataFactory.php(207): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata()

#4 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php(318): Doctrine\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor()

#5 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php(32): Doctrine\ORM\EntityManager->getClassMetadata()

#6 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php(825): Doctrine\ORM\Repository\DefaultRepositoryFactory->getRepository()

#7 C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\public\listar-cursos.php(6): Doctrine\ORM\EntityManager->getRepository()

#8 {main} thrown in C:\Users\elton\OneDrive\Área de Trabalho\Nova pasta\vendor\doctrine\persistence\src\Persistence\Mapping\MappingException.php on line 80

Segue um print das pastas e do JSON

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Qual versão de php e do composer que vc tem instalado ai?

Olá,

Só pra poder contextualizar... Oq acontece é que a aula foi gravada a um tempo já, então todas as versões da aula, está desatualizado, para resolver isso, você precisa baixar todas as versões que estão no vídeo aula, que no caso precisa baixar a versão do PHP 7.1.3, Composer 1.8.5 .

No meu caso, estou usando o xampp, então tive que baixar uma versão do xampp que tem o php já na versão 7.1; https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.1.30/xampp-portable-windows-x64-7.1.30-5-VC14-installer.exe/download

Já no composer, eu tive que usar uma versão portable, que se não me engano, não mostra no curso como usar esse modo. https://getcomposer.org/download/1.8.5/composer.phar

Unica diferença é que no curso, ele fala que precisa usar o comando "composer install" porem com essa versão ".phar" do composer, o comando fica diferente, você precisa usar o "php" na frente do comando e adicionar ".phar" no final, o codigo "composer install" ficará da seguinte forma; "php composer.phar install". Com isso irá rodar corretamente todas as instações e funcionará corretamente.

Lembrando que o arquivo composer.phar, precisa está no local que você irá execultar o comando.

solução!

Olá, pessoal. Hoje saiu uma versão atualizada desse curso, então esses problemas não vão mais acontecer. :-D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software