viernes, junio 26

Instalar PDO_INFORMIX EN Linux (Centos)


GUIA DE INSTALACION DE PDO_INFORMIX EN CENTOS

  • Crear un grupo de nombre informix
  • Crear un usuario del mismo nombre (informix), el cual debe pertenecer al grupo informix creado en el paso anterior, el directorio home de este usuario debe ser /opt/IBM/informix. Observe que el home del usuario informx es la ruta donde se instalara el cliente de informix (client sdk), es decir estos deben coincidir.
  • Descargar el clientsdk.2.90.UC4.tar de la pagina de IBM, este viene siendo el cliente, y lo puedes bajar de esta ruta :
  • Debes estar registrado en IBM, para que puedas bajarlo.
  • Una vez que lo tengas descargado, lo descomprimes asi:

tar -xvf clientsdk.2.90.UC4.LINUX.tar

  • Ya descomprimido, entras a la carpeta clientsdk.2.90.UC4.LINUX.tar_FILES en consola y tecleas ./installclientsdk y sigues los pasos del instalador hasta terminar.
    • Observa que en la instalacion del cliente sdk te pide que especifiques la ruta donde se instalara, por default te muestar /opt/IBM/informix, esta ruta debe corresponder con el home del usuario informix, creado en el primer paso, puedes cambiar la ruta a /opt/informix, pero recuerda actualizar el home del usuario informix para que quede igual, es decir as: /opt/informix, o bien dejalo como te lo muestra.


AHORA SIGUE INSTALAR EL PDO_INFORMIX, sigue estas instrucciones:

Ubicate en
alguna carpeta donde quieras que se descargue el software, y teclea el siguiente comando:

  • El comando anterior te descarog el archivo PDO_IN
    FORMIX-1.0.0.tgz, ahora necesitas descomprimirlo, asi :
    tar zxf PDO_INFORMIX-1.0.0.tgz
  • Ahora necesitamos compilar el pdo_informix, para ello necesitamos el PHPIZE, para ver si esta instalado, entraa la carpeta de pdo_informix (cd
    pdo_informix) y teclea simplemente phpize, si te marca que no esta instalado, entonces necesitas instalar las herramientas de desarrollo, con el siguiente comando:
yum install php-devel

Reinicia tu Linux

  • Ahora si , vamos a compilar el pdo_informix, dentro de la carpeta pdo_informix, teclea los siguientes comandos:
    • phpize
    • ./configure
    • make
    • make install
    • Busca el pdo_informix.so dentro de la carpeta modules de tu ruta actual, y pegalo en /usr/lib/php/modules ( si no existe ya).

Hasta este punto, se supone que ya tenemos el software instalado, nos falta la configuracion de variables de ambiente, de php, services, hosts ,etc, hay que hacer lo siguiente:
Variables de ambiente:

PROFILE /etc/profile

Editalo y agrega las lineas:
INFORMIXDIR=/opt/IBM/informix
export INFORMIXDIR
PATH=$PATH:$INFORMIXDIR/bin
export PATH

PDO.INI (Ubicado en /etc/php.d/pdo.ini ), ahi definiremos la extension de informix
Agregale la siguiente linea:

extension=pdo_informix.so

SERVICES (Ubicado en /etc/services)
Editalo y agrega al final las lineas, estas son ejemplo, agrega las que correspondan a tu configuracion:

# Local services

aplicaexec 1526/tcp
sqlexec2 1527/tcp

SQLHOSTS (Ubicado en opt/IBM/informix/etc/sqlhosts)

Editalo y agrega la siguiente configuracion:


nombredeinstancia onsoctcp ipdetuservidor sqlexec2
nombredeinstancia onsoctcp ipdetuservidor aplicaexec

nombredeinstancia, es el nombre de la instancia a la que te conectaras en informix.
onsoctcp es el protocolo
sqlexec2 es el nombre del servicio en linux (/etc/services)

HTTPD Ubicado en (etc/init.d/httpd)
Editalo y agrega las siguientes lineas:

INFORMIXDIR=/opt/IBM/informix export INFORMIXDIR
DB_LOCALE=es_es.8859-1 export DB_LOCALE
En mi caso, yo las agregue al final, pero no las reconocia, luego las cambie entre las primeras lineas y ya me las reconocio perfectamente.

VERIFICACION DE CONFIGURACION
Vamos a verificar que se haya cargado el modulo pdo_informix

para ello puedes crear un archivo con el siguiente contenido:

nano configuracion.php

phpinfo();
?>

Ejecutalo desde un navegador y busca la seccion de PDO, debe aparecer asi :
PDO drivers => informix, mysql, odbc, sqlite

pdo_informix

pdo_informix support => enabled
En la seccion de Environment, debe de aparecerte la variable de ambiente INFORMIXDIR, ASI:

Seccion de Environment

Te debe mostrar la variable de ambiente de INFORMIXDIR

INFORMIXDIR => /opt/IBM/informix

Esta info fue obtenida con phpinfo();
Si todo esto te aparece, entonces significa que ya esta instaldo tu modulo de pdo_informix y ya puedes conectarte con php.

THROUBLESHOOTING
Por ultimo, toma en cuenta esto, ya que si no logra conectarte, comunmente te marcara el error:

Example 5-20 INFORMIXDIR environment variable not set
/usr/local/bin/php pdoconnect.php
Error!: SQLSTATE=HY000, SQLDriverConnect: -23101
[Informix][Informix ODBC Driver][Informix]Unspecified System Error = -23101.

Este error se debe a diferencias en tu configuracion, toma en cuenta el siguiente texto:

Troubleshooting
The ifx_* function set also relies on the correct settings in environment variables
and the configuration file for Informix SDK, so there are several sources for
problems in the first attempt to connect to the Informix IDS database server. We
list some of the most common mistakes causing connectivity problems. You may
notice that the error message shows twice in the output of our examples. The
first message comes from the connect function for which we did not disable the
error display. The second one is from the error caption. For a detailed discussion
about error management, refer to Section 5.2.7, “Error handling” on page 311.
Environment variables for Informix products are necessary to enable the client to
find the database server. Example 5-23 and Example 5-24 show the error
messages when the environment for the client is set improperly. Here we used
the PHP command line utility to generate the output. The browser would
generate similar results.
Example 5-23 Missing INFORMIXDIR in the Apache environment
/usr/local/bin/php ifxconnect.php
Warning: ifx_connect(): E [SQLSTATE=IX 001 SQLCODE=-1829] in
/usr/local/apache2/htdocs/ifxconnect.php on line 3
Example 5-24 Missing INFORMIXSERVER in the Apache environment
/usr/local/bin/php ifxconnect.php
Warning: ifx_connect(): E [SQLSTATE=IX 000 SQLCODE=-25560] in
/usr/local/apache2/htdocs/ifx/connect/ifxconnect.php on line 3
Connect: Returncode E [SQLSTATE=IX 000 SQLCODE=-25560] -- Environment
variable INFORMIXSERVER must be set.


After setting the right environment variables, we have to take into account that
we are working in a client server architecture. So the user running the PHP script
has to be authenticated at the database server machine for using the server. In
Example 5-25, the connection is attempting to connect with the wrong password,
which will certainly generate an error message.
Example 5-25 User connection password is wrong
/usr/local/bin/php ifxconnect.php
Warning: ifx_connect(): E [SQLSTATE=IX 000 SQLCODE=-952] in
/usr/local/apache2/htdocs/ifx/connect/ifxconnect.php on line 3
Connect: Returncode E [SQLSTATE=IX 000 SQLCODE=-952] -- User
(informix@lead.itsosj.sanjose.ibm.com)'s password is not correct for the
database server.

Verify the following if all necessary Informix environment variables set in the
Apache environment are verified with phpinfo() and you still receive an error
message as shown below:
/usr/local/bin/php ifxconnect.php
/usr/local/bin/php: error while loading shared libraries: libifsql.so:
cannot open shared object file: No such file or directory
1. Does the library exist? If not, check the installation.
2. Does the user informix has the authority to run /usr/local/bin/php
? If not, check permissions in the installation directory.
3. Are there other users getting similar errors such as this?
In this case, check the permissions of the installation path. One of the
directories above the SDK installation directory may not have read
permissions for public. A typical scenario is the installation in the home
directory of the informix user in Red Hat. The home directories have
rwx------ as default permissions.




Bibliografia :

  • (Libro) Developing PHP Applications for IBM Data Servers, en la pagina 235. (RedBooks, lo puedes conseguir en la pagina de IBM o en algun lugar de internet).


Ahora si, a echar codigo.....



5 comentarios:

José Cristóbal Martín Gómez dijo...

Muchas gracias!! Justo ahora voy a seguirlo al pie de la letra porque llevo un par de días intentando configurarlo pero no he podido.

Alejandro Peláez dijo...

Ya consulté el redbook que mencionas, pero está viejo, es de 2006 y habla de php4. Además estoy con open suse, hay algo más apropiado a mi situación?

El Rojo dijo...

Que tal Alejandro, mira yo lo he instalado en Centos y en Debian Lenny, Suse no lo he usado, pero lo intentare tambien en Suse ok, y luego lo publico.

Intenta con la guia de instalacion de Pdo_INFORMIX en Debian Lenny, la cual esta en este mismo blog, revisa tu estructura de directorios, ya que tanto en Centos como en Lenny varian un poco, y eso puede ser tambien en Suse, y puedes intentar con nuevas versiones de PDO y de ClientSDK.

Saludos.

El Rojo dijo...

Que tal Alejandro Pelaez, mira en este mismo blog, ve la entrada "Instalar PDO_INFORMIX EN Debian Lenny", justo como se describe la instalacion de pdo_informix ahi en esa entrada, es lo mismo para open suse, recuerda hacerlo con root, y descargar nuevas versiones del clientsdk y de pdo_informix, yo ya hice la instalacion en open suse tambien.

Saludos.

Unknown dijo...

Saludos,

Tengo un inconveniente al intertar usar PHP e Informix, ya tengo configurado el origen de datos “prueba_dsn” cuando en la terminal de linux ejecuto el comando isql prueba_dsn me indica que esta conectado , ya configure todo ,ya instale el pdo_informix pq me aparece al ejecutar el metodo phpinfo(); pero me muesta un erro al hacer la conexion via PHP:

SQLSTATE=08004, SQLDriverConnect: -908 [Informix][Informix ODBC Driver][Informix]Attempt to connect to database server (envases) failed.

Por favor enviame sugerencias para solucionar el problema