2 de enero de 2012

Depecrated error en VirtueMart 1.1.9 Latest Products Module

Estoy últimamente algo liado con Joomla y VirtueMart para crear una tienda virtual a un amigete y así ganar un sobresueldo ; ) A la hora de realizar la instalación de Joomla, me reportó que el servidor tenía activada la opción de mostrar errores por pantalla; display_errors = On en el archivo de configuración php.ini.

Como se puede ver en la documentación de PHP, ésta es una opción de ayuda para el desarrollo del sitio pero debe ser desactivada:
Esta es una característica para apoyar su desarrollo y nunca debería usarse es sistemas de producción (p.ej. sistemas conectados a internet).
Me puse en contacto con la empresa de hosting, dado que no me permiten tocar el archivo de configurción de PHP, pero se ve que no me hicieron mucho caso. Mientras realizada la instalación del módulo Latest Products de VirtueMart, me encontré con el siguiente error:
Deprecated: Assigning the return value of new by reference is deprecated in /.../modules/mod_virtuemart_latestprod/mod_virtuemart_latestprod.php on line 42
Buscando információn por Internet, llegue a la siguiente entrada donde aparece la siguiente información:
Esto en PHP4 (e inferior) significa “crea el objeto de clase class1 y asignar LA REFERENCIA a la variable $var1."
Según la documentación de PHP y de forma resumida:
Las Referencias en PHP son medios de acceder al mismo contenido de una variable mediante diferentes nombres.
Una vez tenemos más claro el problema, sigo buscando información y encuentro otra entrada que explica más en detalle el problema incluyendo algunos ejemplos. Además, enlanzan la documentación de PHP donde podemos econtrar lo siguiente:
Since PHP 5, new returns a reference automatically, so using =& in this context is deprecated and produces an E_DEPRECATED message in PHP 5.3 and later, and an E_STRICT message in earlier versions.
Si revisamos el archivo que nos indica el error, mod_virtuemart_latestprod.php, encontramos:



Por lo que si quitamos el ampersand, &, la variable db se declarará correctamente tomando el valor almacenado en ps_DB.


De momento es una solución, pero seguiré insistiendo hasta que me desactiven display_errors o consiga desde otros médios, htaccess, desactivarlo. De momento no he sido capaz y el servidor me tira un error 500 con las opciones que he probado. Seguiré haciendo pruebas a ver si doy con la tecla, ya os comentaré ; )

Más información:

http://php.net/manual/en/migration53.deprecated.php
http://www.php.net/manual/en/language.oop5.basic.php#language.oop5.basic.new
http://us3.php.net/manual/en/language.oop5.references.php
http://www.php.net/manual/en/language.references.php#93292

Un saludo, Brixton Cat.

4 comentarios:

  1. Me sirvió mucho gracias.

    ResponderEliminar
  2. Gracias @Anonimo por el comentario! No te quiero contar como sigue el tema con la empresa de hosting... Me veo solucionando error por error hasta dejar la(s) Web sin errores :( Saludos!

    ResponderEliminar
  3. Muchas gracias, batalle algunas horas tratando de modificar el php.ini y no pude ni a traves de .htaccess, muchisimas gracias

    ResponderEliminar

Bienvenid= si quieres dejar un comentario