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.