Laravel dá erro 500 ou «No application encryption key»: o que verificar

Na maioria dos casos, um Laravel acabado de enviar que dá erro 500 tem uma de quatro causas: falta a chave da aplicação, as pastas storage e bootstrap/cache não deixam escrever, falta a pasta vendor, ou o PHP é de uma versão que o projecto não aceita. A mensagem exacta está no ficheiro de registo, e é ela que diz qual é.

Primeiro, ler a mensagem

O Laravel escreve os seus erros em storage/logs/laravel.log. Abra o ficheiro no Gestor de Ficheiros e vá ao fim: as últimas linhas dizem o que falhou. Se nem esse ficheiro existe, o problema é anterior (permissões ou PHP), e o error_log do PHP, na pasta public, é quem sabe: onde está o registo de erros do PHP.

A mensagem diz Causa O que fazer
No application encryption key has been specified A linha APP_KEY do .env está vazia ou o ficheiro não existe. No Terminal, na raiz do projecto: php artisan key:generate. Escreve a chave no .env.
Failed opening required 'vendor/autoload.php' A pasta vendor não foi enviada ou não foi criada. Corra composer install ou envie a pasta. O Composer em hospedagem partilhada.
Your Composer dependencies require a PHP version… O PHP da pasta é mais antigo do que o projecto pede. Escolha outra versão em Select PHP Version: mudar a versão do PHP sem partir o site.
Permission denied / could not be opened (storage/logs) O Laravel não consegue escrever em storage ou bootstrap/cache. Dê escrita a essas duas pastas e às subpastas, no Gestor de Ficheiros (Change Permissions).
Class not found, depois de mudar o código A cache de configuração ou o autoload ficaram desactualizados. Corra php artisan config:clear e composer dump-autoload.

A ordem que poupa tempo

1 Confirme o PHP da linha de comandos. Se o php artisan falha com versões, está a usar outro PHP: correr o PHP que escolheu.
2 Confirme a raiz do site. O domínio tem de apontar à pasta public do projecto. Apontar à raiz dá 403, 404 ou uma listagem de ficheiros.
3 Confira o .env. O ficheiro tem de existir (o modelo chama-se .env.example), com os dados da base de dados e do endereço, e a linha APP_KEY preenchida.
4 Limpe as caches sempre que mudar o .env: php artisan config:clear. Se o projecto usa cache de configuração, o Laravel ignora as alterações ao .env até a limpar.
5 Recarregue a página e volte a ler o laravel.log. Cada correcção revela a seguinte, e a mensagem muda. Vá uma de cada vez.
Não resolva um 500 ligando o modo de depuração em produção. Com APP_DEBUG=true, qualquer visitante vê o código, os caminhos e, às vezes, dados da base de dados. Ligue-o só o tempo de ler o erro, ou melhor, leia o laravel.log e deixe-o desligado. Depois de corrigir, ponha APP_DEBUG=false.
Mudou o .env e nada mudou? É quase sempre a cache de configuração. E se mudou a palavra-passe da base de dados, o php artisan config:clear é o primeiro comando a correr. Para o resto do caminho de um Laravel em hospedagem, veja pôr uma aplicação Laravel a funcionar.

Já leu o laravel.log e a mensagem não lhe diz nada? Envie-nos o domínio e a última mensagem do ficheiro, sem palavras-passe.

Abrir um pedido de suporte

VEJA TAMBÉM

Pôr uma aplicação Laravel a funcionar

Erros de sites explicados: 500, 403, 404, 508

Onde está o registo de erros do PHP

O Composer em hospedagem partilhada

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?