Error “mysql_real_escape_string” al activar un tema de WordPress

L’altre dia volia aplicar un tema que ja estaba corrent en un altre servidor a un bloc nou que havia de tenir la mateixa aparença, el problema era que al posar aquest tema basat amb la plantilla (Canvas), la web mostrava aquest error: “Error 500: La página www.xxxxxxxx.com no funciona – La página www.xxxxxxxx.com no puede procesar esta solicitud ahora”

2016-05-18_13-05-06

El primer que s’ha de fer en aquest cas, és si podem, anar a mirar el log del servidor web. Aquest si ens donarà informació útil relacionada amb l’error. En el cas que ens ocupa al ser un Apache2 corrent en un linux, els logs es troben a la carpeta /var/log.

L’Error en qüestió deia el següent:

#4 #4 {main}
thrown in /var/www/xxxxxxxxxxx.com/www/wp-content/themes/canvas/functions/admin-interface.php on line 111" while reading response header from upstream, client: 192.168.1.15, server: xxxxxxxxxxx.com, request: "GET /wp-admin/admin.php?page=woothemes HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "xxxxxxxxxxx.com"
2016/05/02 19:27:26 [error] 1100#1100: *2 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function mysql_real_escape_string() in /var/www/xxxxxxxxxxx.com/www/wp-content/themes/canvas/functions/admin-interface.php:111
Stack trace:
#0 /var/www/xxxxxxxxxxx.com/www/wp-includes/plugin.php(525): woothemes_add_admin('')
#1 /var/www/xxxxxxxxxxx.com/www/wp-admin/includes/menu.php(149): do_action('admin_menu', '')
#2 /var/www/xxxxxxxxxxx.com/www/wp-admin/menu.php(282): require_once('/var/www/xxx...')
#3 /var/www/xxxxxxxxxxx.com/www/wp-admin/admin.php(138): require('/var/www/xxx...')
#4 {main}
thrown in /var/www/xxxxxxxxxxx.com/www/wp-content/themes/canvas/functions/admin-interface.php on line 111" while reading response header from upstream, client: 192.168.1.15, server: xxxxxxxxxxx.com, request: "GET /wp-admin/admin.php?page=woothemes HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "xxxxxxxxxxx.com"

La part important on ens diu exactament l’error sobre el que hem de treballar, és aquesta:

Error: Call to undefined function mysql_real_escape_string() in /var/xxxxxx....

En el missatge ens indica que falla la funció “mysql_real_escape_string”. Fent una cerca per Internet, podem veure que aquest mòdul des de la versió de php 5.5, ha passat a millor vida.

http://php.net/manual/en/function.mysql-real-escape-string.php

2016-05-18_15-15-09

Amb un “php -v” vaig veure que la meva versió era posterior a la 5.5 i que per tant tal i com indica l’error, la funció “mysql_real_escape_string” de l’arxiu “admin-interface.php“, havia de ser substituït. Així que ja tenia clar el problema i la solució, ara només faltava aplicar-la.

if ( isset( $_REQUEST['page'] ) ) {
// Sanitize page being requested.
$_page = '';
$_page =  mysql_real_escape_string( strtolower( trim( strip_tags( $_REQUEST['page'] ) ) ) );
// Sanitize action being requested.
$_action = '';
if ( isset( $_REQUEST['woo_save'] ) ) {
$_action =  mysql_real_escape_string( strtolower( trim( strip_tags( $_REQUEST['woo_save'] ) ) ) );
} // End IF Statement
// If the action is "reset", run the SWITCH.
/* Perform settings reset.

Per aquest amb la nova funció “msqli_connect ()

if ( isset( $_REQUEST['page'] ) ) {
// Sanitize page being requested.
$_page = '';
$_page =  mysqli_connect( strtolower( trim( strip_tags( $_REQUEST['page'] ) ) ) );
// Sanitize action being requested.
$_action = '';
if ( isset( $_REQUEST['woo_save'] ) ) {
$_action =  mysqli_connect( strtolower( trim( strip_tags( $_REQUEST['woo_save'] ) ) ) );
} // End IF Statement
// If the action is "reset", run the SWITCH.
/* Perform settings reset.

Amb això l’activació del tema ja va funcionar i les seves opcions també

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.