Estás en Inicio / Editorial / Desarrollo Web
03.01.2008
En la versión 5 se han mejorado significativamente las capacidades de PHP. Pero muchos desarrolladores todavía no pueden hacer uso de sus bondades por el poco soporte que aún existe para esta versión. Zend nos anuncia que dejará de dar soporte a la versión 4 dentro de muy poco tiempo y con esto nos obliga a migrar hacia la última versión estable del lenguaje, PHP 5.
Aproximadamente hace 3 años fue liberado PHP 5. En estos tres años ha demostrado tener muchas mejoras con respecto a PHP 4.
PHP 5 es rápido, estable y productivo por lo que los desarrolladores del lenguaje dejarán de entregarnos nuevas versiones de PHP 4, que terminará en la 4.4 y fue descontinuado el último día del año 2007; sin embargo se mantendrán publicando actualizaciones críticas de seguridad para éste hasta agosto del 2008.
Es por esto que los desarrolladores nos recomiendan emplear lo que queda de año para migrar nuestras aplicaciones hechas en PHP 4 hacia la versión 5 y precisamente ese es el objetivo de este artículo, ayudar en el proceso de migración con algunos consejos y soluciones.
La última versión estable se puede descargar en el sitio oficial, donde encontraremos disponible el código fuente listo para compilar y el binario para realizar nuestra instalación sobre Windows. También se puede instalar fácilmente desde el gestor de paquetes que utilicemos en nuestra distribución de Linux.
Para las distribuciones basadas en Debian es recomendable utilizar apt-get o aptitude y para las basadas en paquetes de instalación RPM pueden bajarse la última versión utilizando el buscador de paquetes.
Antes de migrar cualquiera de nuestras aplicaciones es necesario conocer los cambios que han ocurrido en PHP 5 con respecto a versiones anteriores y de esta forma realizar los preparativos necesarios para que la migración sea exitosa.
Esta versión de PHP tiene integrado el Motor Zend 2, con lo que ha mejorado significativamente el rendimiento y en general todas las capacidades de PHP 5; ya que éste fue hecho especialmente para ser más rápido que el anterior.
Además, los desarrolladores han tenido en cuenta la migración, por lo que han tomado las precauciones necesarias para que un código bien escrito con PHP 4, sea perfectamente comprendido por el motor de PHP 5, y de esta forma hacernos este proceso más fácil, así como una nueva directiva para habilitar la compatibilidad con la versión anterior que ha sido agregada al archivo de configuración y de la que hablaremos más adelante.
La mayoría del código PHP 4 que existe actualmente debe correr sin problemas en el motor PHP 5. Pero siempre es recomendable conocer algunos cambios incompatibles con versiones anteriores y probar el código antes de la migración en los entornos de producción.
El entorno CLI ha sufrido algunas modificaciones, al igual que los nombres del archivo CGI. En PHP 5 el archivo CGI es php-cgi.exe (anteriormente php.exe) y la versión CLI está ubicada en el directorio principal (anteriormente se encontraba en cli/php.exe).
También se introdujo un nuevo módulo, el php-win.exe que es similar a la versión CLI, excepto que php-win.exe no genera ninguna salida, por lo que no provee una consola. Mostrando un comportamiento similar al de php-gtk.
La versión CLI siempre define las variables globales $argv y $argc, sin importar las directivas establecidas en php.ini. Incluso teniendo el parámetro register_argc_argv en off no tendrá efecto en la versión CLI.
Si está usando PHP en modo CGI, será necesario realizar los cambios correspondientes en su servidor web. En Apache deberá modificar el archivo de configuración como se muestra a continuación:
# cambie esta línea: Action application/x-httpd-php "/php/php.exe" # por esta: Action application/x-httpd-php "/php/php-cgi.exe"
En el servidor web de Windows: IIS deberá configurar los CGI como se detalla bajo el subtítulo “Configuración de Internet Information Services” en el artículo Cómo publicar páginas PHP en Internet Information Services publicado en esta web.
No solo los CGI y CLI tuvieron modificaciones, también los módulos ISAPI de esta versión cambiaron sus nombres de php4xxxx a php5xxxx, por lo que será necesario realizar cambios en algunos archivos de configuración del servidor web. En Apache deberá realizar las modificaciones como se muestra en el recuadro siguiente:
# cambie esta línea: LoadModule php4_module /php/sapi/php4apache2.dll # por esta: LoadModule php5_module /php/php5apache2.dll
En esta versión de PHP se han agregado algunas nuevas funciones para: operaciones con matrices, procesamiento de datos utilizando InterBase, conversión de juegos de caracteres con iconv, manipulación de stream, trabajo con fecha y hora, cadenas y otras varias. También es importante destacar que la extensión Tidy, para manipulación de documentos HTML, ha cambiado su API completamente.
Se han agregado al archivo de configuración php.ini nuevas directivas que se describen a continuación:
mail(), incluso en modo seguro.$HTTP_*_VARS.MD5 o SHA-1).En versiones previas de PHP, los objetos eran manejados como tipos primitivos, por ejemplo enteros y cadenas. En la versión 5 el manejo de objetos en PHP ha sido re-escrito por completo, permitiendo una mejora en rendimiento y muchas características nuevas.
La desventaja de este método era que semánticamente el objeto completo era copiado cuando una variable era asignada, o pasada como parámetro a un método. En el nuevo enfoque, los objetos son referenciados por gestor, y no por valor. Puede pensarse en el gestor como un identificador de objeto.
Los desarrolladores del lenguaje han tenido en cuenta que muchos programadores de PHP no son conscientes siquiera de los detalles que implican las copias en el modelo antiguo de objetos y, por lo tanto, han implementado la versión 5 de tal forma que la mayoría de las aplicaciones funcionarán sin problemas, o con muy pocas modificaciones.
PHP 5 sufrió cambios significativos con relación a la manipulación de bases de datos con MySQL. Los programadores de Zend decidieron no incluir las bibliotecas de cliente en esta versión porque la mayoría de los sistemas actuales ya vienen con esta librería instalada, además, versiones múltiples de ésta en el mismo sistema pueden presentar problemas realmente grandes.
Otro motivo importante para este cambio fue que MySQL utiliza licencia GPL mientras que PHP está bajo una licencia BSD/Apache y este último tipo de licencia no puede distribuir proyectos realizados en el primero. En los siguientes párrafos mostramos la forma de configurar su PHP 5 para trabajar con bases de datos MySQL.
MySQL está perfectamente soportado en la versión 5 de PHP, el único cambio es que no se encuentra habilitado por defecto.
Para habilitar MySQL en Linux se deberá compilar el código estableciendo en la línea configure la opción --whith-mysql[=DIRECTORIO]; donde DIRECTORIO es la ruta de nuestra instalación de MySQL, por ejemplo: --with-mysql=/usr
Para habilitar MySQL en Windows sólo es necesario editar el archivo php.ini y habilitar el recurso DLL php_mysql.dll que en la versión anterior no existía porque este soporte estaba incorporado en los binarios del motor. También debemos asegurarnos que el archivo libmysql.dll se encuentra en la carpeta de archivos del sistema. Por defecto esta carpeta es: c:\windows\system32\.
Califica esta nota:
Reynier Matos Padilla
Administrador de sistemas y diseñador web. Con experiencias en tecnologías ASP.NET, PHP, Javascript, CSS, DHTML, AJAX, servicios web, y XML.
Si eres nuevo en Maestros del Web y te agradan nuestras publicaciones, te invitamos a suscribirte a nuestro Feed.
Sindícanos en: Google Reader, Bloglines, My Yahoo o My MSN | ¿Qué es el Feed?
11 comentarios en total.
“Es por esto que los desarrolladores nos recomiendan emplear ¡¡¡lo que queda de año!! para migrar nuestras aplicaciones hechas en PHP 4 hacia la versión 5…”
¡Ah!, pensaba que había prisa ![]()
Gracias por el documento. Así da gusto. Feliz 2008.
Muy buen artículo. Solo me queda la duda de los módulos ISAPI que según en el artículo se pueden utilizar en Apache. Yo sabía que estos se configuran en Windows IIS Server (de ahí el nombre de ISAPI) y que las DLL se hacían en Apache. Pueden explicar más a detalle este punto?.
Por lo demás esta excelente.
Joakkinen:
Este artículo fue escrito en el mes de diciembre del 2007, pero por el volumen de artículos que tienen los editores para revisar, no fue publicado hasta hoy.
Es por esto que dice “…lo que queda de año…”; se refiere al que terminó recientemente.
¡Salud y suerte a todos en este 2008! ![]()
Juan Manuel Lemus:
Esta es una característica de Apache sobre Windows. Apache también puede cargar extensiones ISAPI como lo hace IIS. Sin embargo, NO PUEDE cargar filtros ISAPI.
Aquí te dejo la documentación del sitio oficial sobre el módulo mod_isapi que se utiliza para esto:
Apache 1.3:
http://httpd.apache.org/docs/1.3/mod/mod_isapi.html
Apache 2.0:
http://httpd.apache.org/docs/2.0/mod/mod_isapi.html
Juan Manuel Lemus:
Cuando se habla de los módulos ISAPI se refiere a Apache sobre Windows, en el que también se pueden cargar extensiones ISAPI como lo hace el IIS de Microsoft.
Aquí te dejo la documentación oficial del módulo mod_isapi que se utiliza para esto:
Apache 1.3:
http://httpd.apache.org/docs/1.3/mod/mod_isapi.html
Apache 2.0:
http://httpd.apache.org/docs/2.0/mod/mod_isapi.html
Yo estoy haciendo el cambio a php5 y me da fallo al conectar al servidor. Os explico: utilizo la librería adodb para conectar a un sql server. Con php4 no tenía ningún problema, pero ahora, con php5, no me conecta.
He bajado la versión de adobd para php5 pero sigue sin conectar. Alguno me puede echar una mano?? Gracias por la ayuda y por el artículo.
Buenas tardes,
trabajo en una consultora y actualmente estamos buscando un consultor instructor para una cosultoría/curso en España que trata sobre las diferencias entre PHP4 y 5 y los problemas que te encuentras en las migraciones de aplicaciones. Si alguno de vosotros que ya tiene un montón de experiencia en estas lides os interesa colaborar podéis dejarme vuestros datos en evaskun@gmail.com
Mil gracias a todos
Hay que ir pensando que pronto habrá que ir hablando de como migrar de php5 a php6 ![]()
Muy interesante la nota, justamente yo estoy aprendiendo PHP 5 y 6, para implementarlos en futuros proyectos.
Por casualidad, algún interesado en adquirir este dominio?: http://www.golpemaestro.com
Que manual de PHP 5 recomendais? Uno que sea claro, completo y conciso.
Gracias
3 trackbacks en total.
Maestros del Web es el punto de encuentro para los entusiastas de la red.
Creative Commons by-nc-sa 3.0 | Política de Privacidad | CMS: Wordpress