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
| 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
|
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 |