Após upgrade de um Servidor Linux Ubuntu 20.04.5 LTS para a versão Ubuntu 22.04.1 LTS o site para de carregar a página principal e exibe código-fonte do arquivo index.php, segue abaixo o código exibido.
Código fonte index.php do Wordpress que exibe ao tentar carregar o site.
<?php /** * Front to the WordPress application. This file doesn't do anything, but loads * wp-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress */ /** * Tells WordPress to load the WordPress theme and output it. * * @var bool */ define( 'WP_USE_THEMES', true ); /** Loads the WordPress Environment and Template */ require __DIR__ . '/wp-blog-header.php';
Identificando o problema do Wordpress não carregar a página inicial.
Executamos o comando ls -l para verificar as permissões dos arquivos e pasta do WordPress e tudo estava ok
Verificando a situação do Apache no servidor Ubuntu.
Executamos o comando sudo apache2ctl start e recebemos o resultado:
AH00526: Syntax error on line 38 of /etc/apache2/sites-enabled/ocaradoti-le-ssl. conf:
SSLCertificateFile: file '/etc/letsencrypt/live/site.com.br/fullchain.pem' does not exist or is empty
Action 'start' failed.
The Apache error log may have more information.
Em seguida verificamos qual módulo de multiprocessamento o Apache HTTP está usando, executando o seguinte comando:
sudo apachectl -M | grep 'mpm'
Recebemos o seguinte resultado:
mpm_event_module (shared)
este é o resultado que você deve receber
Como ainda estávamos desconfiados que o problema estava no Apache2 executamos o seguinte comando
sudo apache2ctl configtest
Recebemos o resultado
Syntax OK
Este é o resultado que você deve receber
Reinstalando certificados Lets Encrypt.
Continuamos os testes reinstalando os certificados letsencrypt existentes do site executando o comando:
sudo certbot --apache -d ocaradoti.com.br -d www.ocaradoti.com.br
Recebemos o seguinte resultado:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Certificate not yet due for renewal
You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry.
(ref: /etc/letsencrypt/renewal/ocaradoti.com.br.conf)
What would you like to do?
Selecione a opção 1 para não ter erros futuros.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Attempt to reinstall this existing certificate
2: Renew & replace the certificate (may be subject to CA rate limits)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Deploying certificate
Successfully deployed certificate for ocaradoti.com.br to /etc/apache2/sites-enabled/ocaradoti-le-ssl.conf
Successfully deployed certificate for www.ocaradoti.com.br to /etc/apache2/sites-enabled/ocaradoti-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://ocaradoti.com.br and https://www.ocaradoti.com.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Carregando módulo SSL.
Carregamos novamente o módulo SSL executando o comando.
sudo a2enmod ssl
Abaixo segue o resultado obtido:
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled
Investigando o módulo PHP.
Confirmando que o Apache, os certificados Lets Encrypt e o módulo SSL estavam OK, investigamos o modulo PHP instalado.
Sabíamos que a versão que tínhamos instalado era a versão 7.4.
Sendo assim, acessamos a pasta /etc/php.
Após executar o comando ls recebemos o seguinte resultado:
7.4 8.1
Existiam duas pastas de versões diferentes do PHP, a versão 7.4 que instalamos anteriormente e a versão 8.1 atualizada durante o upgrade para o Ubuntu 22.04.1 LTS
Acessamos a pasta /etc/apache2/mods-mods-enabled e executamos o comando ls e notamos que só existiam dois arquivos de referência ao PHP 7.4 os arquivos
php7.4.conf php7.4.load
Causou-nos estranheza, pois se houve atualização do módulo PHP para a versão 8.1 os arquivos php8.1.config e php8.1.load deveriam aparecer na pasta.
Acessamos a pasta /etc/apache2/mods-available$ e executamos o comando ls e localizamos os arquivos
php8.1.config php8.1.load
O fato de os arquivos aparecerem na pasta mods-available nos indica que eles estavam disponíveis, mas não habilitado.
Obtendo a versão ativa do módulo PHP no servidor Ubuntu.
Para confirmar se a versão do PHP em execução era realmente a versão 8.1 como suspeitamos executamos o comando php -v e recebemos o seguinte resultado:
PHP 8.1.2 (cli) (built: Aug 15 2022 12:24:10) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
Dessa forma, concluímos que de fato a versão do PHP que estava rodando no servidor era a 8.1
Causa do erro que faz o Wordpress exibir o codigo fonte.
Este erro passou a acontecer porque o Apache não havia habilitado a versão atualizada do PHP, antes de atualizar o Ubuntu, o PHP ativo no servidor utilizava a versão php7.4, após atualização do Ubuntu a versão ativa do PHP instalado passou a ser php8.1 conforme o resultado postado acima.
Como solucionar o problema do WordPress exibir codigo fonte na pagina principal?
- Executamos o seguinte comando para habilitar o módulo PHP 8.1 no apache
sudo a2enmod php8.1
Recebemos o resultado:Considering dependency mpm_prefork for php8.1:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php8.1:
Enabling module php8.1.
To activate the new configuration, you need to run:
systemctl restart apache2 Enfim, como o resultado nos confirma que o modulo php8.1 foi habilitado com sucesso e solicita o reinício do apache2, executamos o seguinte comando:
sudo systemctl restart apache2
Imediatamente após reiniciar o apache2 o site funcionou novamente.
Posteriormente, executei o comando sudo a2dismod php7.4 para desabilitar o modulo php7.4, reiniciamos novamente o Apache executando o comando sudo systemctl restart apache2
e testamos o site que continuou funcionando.
Enfim, esperamos que esta solução lhe ajude a resolver o problema do WordPress carregar a página de código fonte e não a página inicial após efetuar o upgrade para o Ubuntu 22.04.1 LTS.
Curta, comente e compartilhe.
Fontes de bugs e comandos para Linux: PHP: Debian GNU/Linux installation notes – Manual e Issues · php/php-src · GitHub