Â
Con el cambio de versión de PHP 5.2 a PHP 5.3, algunas funciones de programación muestran mensajes de aviso en la web. Esto es debido a que estas funciones pasarán a estar obsoletas en la próxima versión de PHP. A continuación le mostramos como corregir estos mensajes en distintas situaciones.
Código Propio
Si utiliza código propio, es muy probable que se encuentre utilizando funciones deprecated. Ponemos a continuación una lista de las funciones más habituales, con su correspondiente corrección, y un pequeño ejemplo:
-
ereg() - preg_match()
-
eregi() - preg_match()
-
ereg_replace() - preg_replace()
-
eregi_replace() - preg_replace()
-
split() - preg_split()
-
spliti() - preg_split()
- session_register(), session_unregister(), session_is_registered - (utilizar la superglobal $_SESSION)
Todas estas funciones pasan a utilizar las expresiones regulares.
Â
Ejemplo ereg() - preg_match():
Antes: ereg("^hola","hola que tal como estas");
Ahora: preg_match("/^hola/i","hola que tal como estas");
Nota: Se tiene que poner la frase a buscar entre barras // y escapar caracteres especiales de regexp (http://www.regular-expressions.info/reference.html)
Â
Ejemplo split() - preg_split():
Antes: split("/","/ruta/a/splitear");
Ahora: preg_split("/\//","/ruta/a/splitear");
Nota: com antes, se tiene que poner entre barras el texto por donde se separará, y escapar caracteres especiales de regexp.
Â
Ejemplo eregi_replace() - preg_replace():
Antes: eregi_replace("es","era","Esto es una prueba");Â ereg_replace("es","era","Esto es una prueba");
Ahora: preg_replace("/es/","era","Esto es una prueba");Â preg_replace("/es/i","era","Esto es una prueba");
Nota: Lo mismo de antes, el texto buscado entre barras, caracteres especiales escapados, y si queremos que no se tengan en cuenta las mayúsculas y minúsculas se tiene que poner el parámetro "i" al final de la búsqueda. http://www.regular-expressions.info
Â
Ejemplo session_register(), session_unregister(), session_is_registered - superglobal $_SESSION
Antes: $barney = "Un gran dinosaurio púrpura."; session_register("barney");
Ahora: $_SESSION["barney"] = "Un gran dinosaurio púrpura.";
Estos eran los ejemplos más comunes, pero hay más funciones que pueden presentar el aviso de deprecated. La lista completa se encuentra aquÃ.
CMS
Si utiliza CMS en su web es posible que además de mostrar mensajes de error, dejen de funcionar.
A continuación le mostramos como solventar algunos de estos warnings para distintos CMS.
Indexhibit
Â
Actualmente Indexhibit todavÃa no ha lanzado una versión plenamente compatible con PHP 5.3. Para corregir los mensajes de error que aparecen cuando tenemos Indexhibit en PHP 5.3 haremos lo siguiente:
Conectamos a través de FTP al alojamiento y descargamos el fichero defaults.php.
Una vez descargado, editamos el fichero con el bloc de notas y colocaremos la siguiente lÃnea:
Â
Wordpress
Â
Wordpress es un CMS que siempre está en constante actualización, no obstante si tenemos alguna versión antigua puede que nos aparezcan los mensajes de error. Para corregirlos tendremos que actualizar la versión de Wordpress.
Como los errores no nos dejarán acceder a la administración tendremos que proceder del siguiente modo:
Primero, tenemos que desactivar el parámetro Display_errors. Para ello accedemos al panel de control del alojamiento, en el apartado de Configurar PHP y desactivamos esta directiva.
Una vez desactivado ya podremos acceder a la administración del Wordpress
Dentro de la administración ya podremos realizar la actualización.
Â
Magento
Â
En Magento el error más común al actualizar a la versión de PHP 5.3 es del método Varien_Object.
Fatal error: Method Varien_Object::__tostring() cannot take arguments in /magento/lib/Varien/Object.php
Lo podemos corregir del siguiente modo:
Accedemos por FTP al alojamiento y descargamos el siguiente fichero:Â /lib/Varien/Object.php
En la lÃnea 484, modificar:
public function ___toString(array $arrAttributes = array(), $valueSeparator=’,')
por
public function __invoke(array $arrAttributes = array(), $valueSeparator=’,')
Luego, en el fichero:Â /app/code/core/Mage/Core/Controller/Request/Http.php
En la lÃnea 274, modificar:
$host = split(‘:’, $_SERVER['HTTP_HOST']);
por
$host = explode(‘:’, $_SERVER['HTTP_HOST']);
Moodle
Â
En Moodle el error también puede aparecer por utilizar una versión antigua de la aplicación. Para corregirlo se puede proceder aactualizar el Moodle.
En el sitio oficial dispone de un tutorial para ello.
http://docs.moodle.org/19/es/Actualizaci%c3%b3n_de_moodle
Â
Made Simple
Â
En el CMS Made Simple, si se utiliza una versión antigua pueden aparecer los mensajes de error y no nos dejaria acceder a la administración.
desactivaremos la directiva display_errors.
Una vez desactivado ya podremos acceder a ella y proceder con la actualización.
En el siguiente enlace dispone de un pequeño tutorial para actualizar el CMS.
http://wiki.cmsmadesimple.org/index.php/User_Handbook/Installation/Upgrading/es
Joomla
Â
Â
