Instalar soporte para BD Informix en Ubuntu Server 10.04 y XAMPP 1.7.4 como modulo de PHP

La instalación del PDO_INFORMIX funciono pero la experiencia con el PDO no es lo que esperaba (nunca lo había usado) así que como extraño mis connect, fetch_array y fetch_assoc, aqui les dejo como hechar a volar el modulo de Informix en PHP 5.2

Primero el ambiente:

Ubuntu Server 10.04

XAMPP for Linux 1.7.4 con su respectiva versión de desarrollo (xampp-linux-devel-1.7.4)

Despues asignamos la variable de entorno para el informix en el .profile

export INFORMIXDIR=/opt/IBM

PATH=$PATH:$INFORMIXDIR/bin

Esta debe estar seteada antes de instalar el cliente para compilar despues el modulo de informix para PHP

informix:~# export INFORMIXDIR=/opt/IBM

El cliente de informix requiere un usuario de sistema y un grupo antes de ser instalado

informix:~# addgroup –system informix

informix:~# adduser –system informix –ingroup informix

Los paquetes que debemos instalar son: default-jdk rpm make subversion

El cliente de Informix viene con una JVM pero a mi dio error al instalarlo, asi que instalar el ambiente de Java funciono bien para mi.

informix:~# apt-get install default-jdk rpm make subversion

Creamos las carpetas para instalar el cliente de Informix y php_infomix

informix:# mkdir informix_client

infomix:# mkdir php_informix

Descargamos el cliente de Informix en el directorio, hasta donde se no hay manera de realizar esto por consola, yo me registre en IBM y descargue un free trial, el paquete que use lo encontre en el serach del site de IBM como IBM Informix Client SDK V3.00.FC3 for Linux (x86) RHEL 4, 64bit

El archivo que descargue fue clientsdk.3.00.FC3DE.LINUX.tar, el cual despues pase por usb a mi Ubuntu server en el directorios de informix client.

Descomprimimos el cliente

informix:~/informix_client# tar -xvf clientsdk.3.00.FC3DE.LINUX.tar

Corremos el instaaldor del installclientsdk.

informix:~/informix_client# ./installclientsdk

Es necesario cambiar la ruta de instalacion yo utilice /opt/IBM/

De nuevo debemos aceptar un acuerdo de licencia y avanzar en el installer.

Una ves instaaldo el cliente nos movemos al directorio de php_informix.

informix:~/informix_client# cd ../php_informix

Aqui descragamos lso fuentes de php_informix desde svn.

informix:~/php_informix# svn checkout http://svn.php.net/repository/pecl/informix/trunk/

nos movemos al directorio trunk

informix:~/php_informix# cd trunk

Ahora demos configurar e instalar el modulo de Informix.

informix:~/php_informix/trunk# /opt/lampp/bin/phpize –with-php-config=/opt/lampp/bin/php-config

informix:~/php_informix/trunk# ./configure –with-php-config=/opt/lampp/bin/php-config

Antes de seguirnos de filo con el make del modulo, debemos editar el Makefile para asegurarnos que el modulo esta ligado con la libreria de Informix checkapi.o, de otra manera si usamos el modulo nos mandar error de undefined symbol: ifx_checkAPI.

Editamos el Makefile y reemplazamos el valor de la directiva INFORMIX_SHARED_LIBADD con:

-Wl,-rpath,/opt/IBM/informix/lib/esql -L/opt/IBM/informix/lib/esql -Wl,-rpath,/opt/IBM/informix/lib -L/opt/IBM/informix/lib -lifsql -lifasf -lifgen -lifos -lifgls -ldl -lcrypt /opt/IBM/lib/esql/checkapi.o -lifglx

Ahora si podemos construir e instalar el modulo Informix:

informix:~/php_informix/trunk# make && make install

Este debera de instalarse en /usr/lib/php5/20060613. Debemos verificar que este apunta correctamente a la libreria de Informix checkapi.o, parea esto usamos el comando nm , el resultado debe arrojarnos algo como:

informix:~/php_informix/trunk# nm /usr/lib/php5/20060613/informix.so | grep ifx_checkAPI

000000000000bef0 T ifx_checkAPI

Para agregar y habilitar el modulo debemos editar el archivo php.ini que se encuentra en /opt/lampp/etc/

informix:/# nano /opt/lampp/etc/php.ini

# configuration for php INFORMIX module
extension=informix.so

El valor puede ser informix.so o si les manda error traten con “informix.so”

Por supuesto para lograr una conexión aun debemos editar /opt/IBM/etc/sqlhosts, /etc/hosts, y /etc/services todos estos deben tener la configuración para apuntar al server de informix. Además es necesario setear la variable de ambiente para apache INFORMIXDIR en /etc/apache2/apache2.conf.

Instalar soporte para BD Informix en Ubuntu Server 10.04 y XAMPP 1.7.4 usando conexion como PDO

A continuación detallo los pasos necesarios para habilitar las funciones de Informix para PHP en un equipo con Ubuntu 10.04 y XAMPP 1.7.4

  1. Instalar CSDK 3.00.UC1 (o posterior)
  2. Descargar y extraer el paquete XAMPP 1.7.4
  3. Descargar y extraer PDO_INFORMIX 1.1.0
  4. Configurar PDO_INFORMIX
  5. Actualizar el archivo de configuración de PHP
  6. Validar Y PROBAR el soporte de INFORMIX en PHP

1.Instalación de Informix Client SDK

Si no está instalado, debemos instalar el Client SDK de INFORMIX y establecer INFORMIXDIR como variable de entorno que apunte a la ruta donde se encuentra instalado el CSDK.

Para instalar Informix CSDK, debemos extraer los archivos del producto y ejecutar como root installclientsdk. Siguiendo las instrucciones en pantalla.

Importante: Este tutorial solo funciona en instalaciones Linux-x86 es decir Linux de 32 bits ya que no existen versiones de XAMPP para 64 bits.

2.Descargar XAMPP y extraer los archivos.

Debemos instalar tanto la versión de servidor como la versión de desarrollo

Importante: El paquete de desarrollo es necesario para poder compilar el driver PDO_INFORMIX.

Para instalar, solo debemos descomprimir los paquetes de XAMPP en el directorio /opt utilizando el comando

       tar xvfz xvfz xampp-linux-1.7.4.tar.gz -C /opt
       tar xvfz xampp-linux-DEVEl-1.7.4.tar.gz -C /opt

 

  • Nuestro servidor XAMPP se encuentra ahora instalado en el directorio /opt/lampp

3.Descargar y extraer PDO_INFORMIX

  • Descomprimimos el archivo PDO_INFORMIX en el directorio /opt/lampp/lib/php/extensions
     tar xvfz PDO_INFORMIX-1.1.0.tgz -C /opt/lampp/lib/php/extensions/

4.Configurar PDO_INFORMIX

  • Establecer INFORMIXDIR como variable de entorno apuntando a la ruta donde el Informix Client SDK está instalado.
  • Asegúrense de que los archivos ejecutables PHP y phpize se encuentran en la ruta /opt/lampp/bin
  • Para configurar el módulo PDO_INFORMIX,  debemos ejecutar los siguientes comandos:
      cd/opt/lampp/lib/php/extensions/PDO_INFORMIX-1.1.0
      /opt/lampp/bin/phpize
      ./configure --with-php-config=/opt/lampp/bin/php-config
      make
      make install

Los comandos nos deben mostrar estas pantallas de salida

/opt/lampp/bin/phpize

Esta ilustración es una captura de pantalla después de ejecutar el directorio / opt / lampp / bin / phpize.

./configure

Esta ilustración es una captura de pantalla después de ejecutar el comando. / Configure.

make y make install

Esta ilustración es una captura de pantalla después de ejecutar los comandos de hacer.

  • Después de ejecutar «make install«, debemos verificar que se genero el archivo pdo_informix.so en el directorio /opt/ lampp/lib/php/extensións/no-Debug-nen-zTS-20060613 /

Nota: Mas información acerca del desarrollo del controlador PDO_INFORMIX en la pagina DeveloperWorks.

5.Actualizar el archivo de configuración de PHP (Php.ini)

Debemos ir ala ruta /opt /lampp/etc y abrimos el archivo php.ini con un editor de texto para habilitar el controlador Informix PDO:

    1. Buscamos la sección «Dynamic Extensions» dentro del archivo php.ini y agregamos la información de la extensión PDO_INFORMIX.

extension = «pdo_informix.so»

    1. Debemos también modificar el parámetro memory_limit e incrementarlo a por lo menos 256 MB.

Memory_limit = 256M

Ejecutar una página PHP como una tarea programada (cron) utilizando CURL

Frecuentemente se nos presenta la necesidad de tener que programar alguna tarea diaria, semanal etc…como un envío masivo de email, o unas consultas pesadas a nuestra base de datos, y hacerlo además en las horas de menor actividad de nuestro servidor.

Para muchos de nosotros resulta fácil programar un script con php que realice estas tareas, pero la mayoría de los servidores tienen solo el módulo de PHP instalado lo cual no nos permite ejecutar estos scripts desde la línea de comandos directamente.

La solución a este problema consiste en utilizar CURL. Este paquete viene incorporado en la mayoría de las distribuciones Linux, y en caso contrario, puede ser descargado desde esta dirección http://curl.haxx.se

CURL es una herramienta para transferencia de ficheros con sintaxis URL, que envía la salida por defecto a la pantalla. Podemos hacer la siguiente prueba

# curl http://www.google.com.mx

También podemos reenviar la salida y guardarla en un fichero

# curl http://www.google.com.mx > google.htm

CURL soporta diferentes protocolos FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE, LDAP y algunos mas que podemos consultar en su web. Además se instala una librería con un conjunto de funciones que pueden ser usadas desde php, pero esto es otra historia.

Siguiendo con nuestro caso, podemos ejecutar ahora un script php desde la línea de comandos, simplemente escribiendo esto:

# curl http://localhost/miscript.php

Supongamos que vamos a ejecutar un script que envía los email de nuestro boletín de correo llamado boletin.php pero este se encuentra alojado en una carpeta protegida de nuestro servidor web. En este caso ejecutamos el script pasándole el usuario y contraseña para acceder al directorio protegido.

#curl -u username:password http://localhost/protegido/boletin.php

Para programar en el cron de nuestro linux esta tarea y que sea ejecutada automáticamente de forma periódica debemos conocer la ruta completa donde esta instalado el curl que habitualmente suele ser en /usr/bin.

Ahora editaremos nuestro fichero de tareas de cron (por ejemplo con el comando crontab -e), y añadimos esta línea:

30 4 * * * /usr/bin/curl -u username:password http://localhost/protegido/boletin.php

Esto hará que todos los días a las 4:30 de la madrugada se ejecute el script boletin.php de manera automática. Si desean conocer mas información sobre la programación de tareas consulten el manual de crontan desde la consola (man crontab).