500 de erro ao actualizar para o PHP 8

 

Em Novembro do ano passado O PHP 8 aterrou. Anunciou algumas melhorias no desempenho, velocidade e segurança.

Como qualquer bom funileiro, apressei-me a actualizar para PHP 8 a partir da 7.4, especificamente a 7.4.16, a versão agora em execução no servidor.

Plof! um belo erro de 500 cumprimenta-me e quebra o site inteiro.

500 de erro ao actualizar para o PHP 8

500 de erro no WordPress ao actualizar para o PHP 8

Nenhum URL é resolvido. Eu fiz o teste típico para desactivar todos os plugins e usar o modelo padrão.

O erro 500 não desapareceria. Fiquei chocado, mas passei o assunto convencido que ainda era muito cedo para actualizar e, como eles aconselharam, a melhor coisa a fazer era esperar que todos os autores de plugins e modelos actualizassem o seu código para o tornar compatível com o PHP 8.

Quase sete meses depois eu tentei novamente e o erro 500 ainda estava lá. A primeira pista de que a origem do erro está apenas neste blog é que nas outras duas instalações do WordPress que tenho no mesmo servidor tudo funciona correctamente.

Como um erro de 500 pode aparecer por muitas razões. O próximo passo lógico é puxar os registos de erros para tentar descobrir o que está errado. Eu recebo uma série de avisos como este:

Advertência PHP: Uso de constante indefinida menor - assumido 'menor' (isto irá lançar um erro numa versão futura do PHP) em /home/xxxxxx/public_html/blog/wp-config.php na linha 11

Ou seja, a constante deve ter citações à sua volta. Eu vou ao wp-config.php e de facto, a menor aparece sem citações nessa linha.

define ('WP_AUTO_UPDATE_CORE', menor);

Ao pesquisar no fórum WordPress descubro que muitas pessoas tiveram este mesmo problema ao actualizar para versões mais antigas do PHP devido a conflitos com um plugin ou template.

Não se pode excluir que o problema esteja relacionado com a instalação do WordPress que tem algo quebrado, como me foi dito num bilhete que enviei para LucusHost.

Em algumas das respostas que recebem, eles dizem que para resolver o problema basta adicionar as vírgulas invertidas a 'menor', por isso experimente e é isso que estou a fazer.

define ('WP_AUTO_UPDATE_CORE', 'menor');

WP_AUTO_UPDATE_CORE permite-lhe controlar as actualizações do núcleo do WordPress para versões menores, maiores e de desenvolvimento. Esta constante pode ser definida de várias maneiras. A remoção desta linha não é uma boa ideia.

#Desactiva todas as actualizações do núcleo:

define( 'WP_AUTO_UPDATE_CORE', falso );

# Habilita todas as actualizações, incluindo actualizações menores e maiores:

define( 'WP_AUTO_UPDATE_CORE', verdadeiro );

# Permite pequenas actualizações:

define( 'WP_AUTO_UPDATE_CORE', 'menor' );

Boas notícias e más notícias

A boa notícia é que agora, ao executar o PHP 8, o erro 500 desapareceu. Tudo parece funcionar bem à primeira vista, tanto plugins como posts. A má notícia é que o índice está quebrado e parece que assim.

500 de erro ao actualizar para o PHP 8

Eu decidi atacar primeiro a modelo de mensagem feito com Elementor Pro caso o construtor tivesse deixado algum lixo escondido, mas depois de o ter revisto e refazer completamente, excluí que o erro tivesse vindo dali.

Agora ainda estou a expurgar o modelo (GeneratePress Premium) num ambiente de teste e pelo menos sei onde se parte, mas a maior parte das vezes estou a procurar no WordPress, que é onde eu penso que está o cerne da questão, algum código obsoleto arrastado, algum filtro entupido com gordura ou o que quer que seja :P

Vou deixar esta nota aqui no caso de alguém ter tido um problema semelhante e isso for útil, ou se o que escrevi aqui for útil, ou se você souber alguma coisa sobre o WP e puder fornecer mais algumas pistas para o resolver. Assim que eu encontrar a solução definitiva e a possível explicação, irei actualizar este post.

Relacionado WordPressePHP8.0. Lista de mudanças, desenvolvimentos e outras questões

Leia o documento completo de actualização


Suscríbete por email para recibir las viñetas y los artículos completos y sin publicidad

Artículos relacionados

Este blog se aloja en LucusHost

LucusHost, el mejor hosting