Por todos es sabido la importancia de tener los sistemas actualizados al dia, pero siempre tenemos el miedo de que aparezca algun error 500 despues de realizar una actualizacion que parecia segura.
Pues con esta entrada voy a explicar como solucionar dos errores tipicos que pueden aparecer en wordpress al actualizar php a la version 7 o 8 desde una version php 5.
Uno de los errores mas comunes es de utilizar la funcion mysql() que esta deprecada y es necesario utilizar mysqli().
[17-Feb-2021 03:32:58 UTC] PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/xxxxxxx/public_html/wp-includes/wp-db.php:1685
Stack trace:
#0 /home/xxxxxxx/public_html/wp-includes/wp-db.php(632): wpdb->db_connect()
#1 /home/xxxxxxx/public_html/wp-includes/load.php(527): wpdb->__construct()
#2 /home/xxxxxxx/public_html/wp-settings.php(124): require_wp_db()
#3 /home/xxxxxxx/public_html/wp-config.php(97): require_once('/home/xxxxxxx/...')
#4 /home/xxxxxxx/public_html/wp-load.php(37): require_once('/home/xxxxxxx/...')
#5 /home/xxxxxxx/public_html/wp-blog-header.php(13): require_once('/home/xxxxxxx/...')
#6 /home/xxxxxxx/public_html/index.php(17): require('/home/xxxxxxx/...')
#7 {main}
Lo que tendriamos que hacer es asegurarnos que la extension mysqli esta habilitada en nuestro servidor web.
php.ini
//Windows server
extension=php_mysqli.dll
//Linux
extension=php_mysqli.so
El otro error comun que nos podemos encontrar es que tengamos una constante definida como string sin entrecomillar, se trata de un error muy tipico que ya en antiguas versiones de php estaba permitido pero desde php 7 se trata de un error fatal.
Nos lo podemos encontrar en el fichero wp-config.php en la constante que define las actualizaciones de wordpress.
PHP Warning: Use of undefined constant minor – assumed ‘minor’ (this will throw an Error in a future version of PHP) in /home/xxxxxx/public_html/blog/wp-config.php on line 11
//El string sin entrecomillar minor nos devuelve error
define ('WP_AUTO_UPDATE_CORE', minor);
//String 'minor' entre comillas para no devolver error
define ('WP_AUTO_UPDATE_CORE', 'minor');
Con estas dos soluciones podemos casi asegurar que una actualizacion a php 8 no nos va a dar ningun error 500 o parecido.
// Notificar todos los errores excepto E_NOTICE
// Este es el valor predeterminado establecido en php.ini o en tiempo de ejecución.
error_reporting(E_ALL ^ E_NOTICE);