Capítulo 14 · 14.6
Erros após uma atualização do PHP e como encontrar o log de erros
Aumentou a versão do PHP e agora o seu website está em branco, mostra uma mensagem de erro, ou uma parte deixou de funcionar. Isto deve-se quase sempre a um plugin, um tema ou código próprio que não é compatível com a nova versão. Sem pânico: repõe a versão anterior num minuto, e depois procura com calma o que está errado.
Passo 1: repor a versão anterior
Vá a Select PHP version, escolha novamente a versão que tinha antes e clique em Apply (consulte Escolher a versão do PHP (Select PHP version)). O seu website volta a funcionar imediatamente como antes. Se tiver alterado extensões ou opções na nova versão, estas mantêm-se guardadas para uma próxima tentativa.
Passo 2: encontrar a mensagem de erro no log de erros
O PHP regista os erros no log de erros do seu domínio. Aí consta exatamente qual o ficheiro e qual a linha que causa o problema.
- No DirectAdmin, em Sistema e arquivos, clique em Estatísticas e logs dos domínios.
- Junto ao seu domínio, clique em Log de erros.
- Observe as últimas linhas, no final. Procure linhas com PHP Fatal error, PHP Parse error ou PHP Warning (1).

Pode ler mais sobre os logs em Estatísticas e logs dos domínios: o log de erros e o log de acesso.
Passo 3: compreender a mensagem
Na mensagem consta o caminho do ficheiro. Por aí consegue geralmente perceber qual o plugin ou tema responsável. Alguns exemplos:
| O que vê na mensagem | Significado |
|---|---|
| .../wp-content/plugins/nome-do-plugin/... | Esse plugin não funciona com a nova versão. Atualize-o, ou procure um substituto se já não for mantido. |
| .../wp-content/themes/nome-do-tema/... | O seu tema é demasiado antigo. Atualize-o ou peça ao autor uma atualização. |
| Call to undefined function mysql_connect() | Código muito antigo que ainda utiliza funções anteriores ao PHP 7. Tem de ser reescrito. |
| Call to undefined function com outro nome de função | Frequentemente falta uma extensão. Verifique qual a extensão associada a essa função e ative-a (consulte Ativar e desativar extensões PHP). |
| Allowed memory size of ... bytes exhausted | O script tem pouca memória disponível. Aumente o memory_limit (consulte Opções PHP: upload_max_filesize, memory_limit e max_execution_time). |
| Maximum execution time of ... seconds exceeded | O script demorou demasiado tempo. Aumente o max_execution_time, ou descubra porque está tão lento. |
Passo 4: atualizar e tentar novamente
- Faça uma cópia de segurança (consulte Backup e restauro: criar um backup por iniciativa própria no DirectAdmin).
- Atualize o WordPress (ou outro software), o seu tema e todos os plugins, enquanto a versão anterior do PHP ainda está ativa.
- Remova os plugins que não utiliza.
- Ative novamente a nova versão do PHP e teste o seu website outra vez. Verifique também novamente o log de erros.
Sugestão: Quer testar primeiro sem que os visitantes sejam afetados? Crie com o Installatron uma cópia do seu site num subdomínio (consulte Clonar e criar um ambiente de teste (staging)) e coloque apenas essa pasta na nova versão através do .htaccess (consulte Definições do PHP por pasta e através de .htaccess).
Mostrar erros temporariamente na página
Apenas vê um ecrã em branco e não há nada de útil no log de erros? Então pode mostrar os erros temporariamente na própria página. Em Select PHP version, no separador Options, ative a opção display_errors. Abra novamente a página: agora vê a mensagem de erro. Desative o display_errors imediatamente a seguir, pois este tipo de mensagem pode revelar informações sobre o seu website a qualquer pessoa.
Se utilizar WordPress, também o pode fazer com estas linhas no wp-config.php, acima da linha That's all, stop editing!: define('WP_DEBUG', true); e define('WP_DEBUG_LOG', true);. O WordPress regista então os erros em wp-content/debug.log. Remova-as depois, ou defina-as como false.
Prefere que resolvamos por si?
Não está a conseguir, ou o seu website não é atualizado há anos? Com a atualização do PHP tornamos o seu website compatível com uma versão atual do PHP, por um preço fixo. Se não for possível, recebe o seu dinheiro de volta.
