Administración > Preguntas Frecuentes - FAQ > Artículos > Como actualizar aplicaciones en PHP 5.2 a PHP 5.3

Como actualizar aplicaciones en PHP 5.2 a PHP 5.3

 

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:

ini_set('error_reporting', 4096);

Guardamos el fichero y lo volvemos a subir a su sitio original.

 

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

Una vez subido por FTP el paquete con la nueva versión y haber sobreescrito los ficheros ejecutamos la siguiente URLhttp://dominio.com/install/upgrade.php

Joomla

 

Joomla dispone de dos líneas de desarrollo, la versión 1.5 y la versión 1.7.
Para corregir los errores que genera la versión 1.5 e inferiores en PHP 5.3 se tiene que actualizar el Joomla a la versión 1.7.

 


Leer también