Las librerías FreeTDS en Linux permiten agregar al PHP funciones para la conectividad con bases de datos como MSSQL, SYBASE y ODBC. Para instalarlas en un servidor de producción debemos ejecutar los siguientes comandos:
cd /usr/local/src
wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar zfvx freetds-stable.tgz
cd freetds-*;
./configure --prefix=/usr/local/freetds --enable-msdblib --enable-dbmfix --with-gnu-ld; make ; make install
Ahora debemos asegurarnos de que las variables globales estén correctamente inicializadas. Para ello debemos ejecutar:
nano /etc/profile
y agregar al final:
PATH=$PATH:/usr/lib
SYBASE=/usr/local/freetds
TDSVER=7.0
LD_LIBRARY_PATH=/usr/lib:/usr/local/freetds/lib
export PATH SYBASE TDSVER LD_LIBRARY_PATH
Salir y Guardar el archivo.
Para verificar que está todo bien debemos ejecutar:
source /etc/profile
env
Esto mostrará las variables globales que se han colocado.
Ahora debemos asegurarnos de que podamos compilar el PHP con easyapache y que tome en cuenta los parámetros asociados a FreeTDS. Para ello debemos agregar las opciones de compilación deseadas en los archivos a través de los cuales el easyapache verifica las opciones manuales que debe tomar en cuenta durante la compilación. Cada opción debe estar en una línea independiente. Debemos ejecutar:
Para el PHP 5:
nano /var/cpanel/easy/apache/rawopts/all_php5
Agregar:
--with-mssql=/usr/local/freetds
En el caso de que se requieran conexiones a bases de datos externas Sybase o basadas en ODBC se deben agregar a dicho archivo las siguientes líneas (Opcional):
--with-sybase-ct=/usr/local/freetds
--with-iodbc=/usr/local/freetds
Salir y guardar.
Ahora debemos asegurarnos que existan los archivos necesarios para que la compilación no cause inconvenientes con el easyapache, ejecutando:
touch /usr/local/freetds/lib/libtds.a
touch /usr/local/freetds/include/tds.h
ln -s /usr/local/freetds/lib lib64
ll /usr/local/freetds/lib64/libsybdb.a
ll /usr/local/freetds/lib64/libsybdb.so
Ahora se debe configurar la conexión con el servidor del cliente (si ya se conoce) por lo que debemos editar el archivo de configuración de FreeTDS usando:
cd /usr/local/freetds/etc
nano freetds.conf
y agregar al final:
[nombre-usuario-sybase]
host = XXX.XXX.XXX.XX
port = 5000
tds version = 5.0
[nombre-usuario-mssql]
host = nombre-dominio-dinamico.com
port = 1433
tds version = 8.0
Salir y Guardar el archivo.
Nota: Los ejemplos de arriba son para un caso de Sybase y un caso de MSSQL 2005 (si fuera 2000 se colocaría la versión 7.0). El puerto de Sybase puede cambiar y hay que verificarlo contra el administrador del sistema remoto.
Debemos asegurarnos que los puertos esten habilitados en el firewall CSF ó APF según el que hayamos instalado, tanto para los puertos de entrada como de salida.
Para el APF:
Editar el archivo de configuración
nano /etc/apf/conf.apf
Agregar los puertos tanto para Entrada (INGRESS) como para Salida (OUTGRESS) y guardar.
Finalmente, debemos compilar el Apache con el PHP. Para esto debe leerse el punto subsiguiente que abarca este aspecto.
NOTA: Luego de compilar el Apache y el PHP con las librerías FreeTDS para probar la conexión hacia un servidor remoto que hayamos configurado previamente en el archivo conf de freetds, podemos crear y ejecutar el siguiente archivo php:
<?php
$link = mssql_connect("nombre-usuario-mssql ","usuario","clave");
if($link){
echo "Conexión Exitosa";
} else {
echo "FALLA:".mssql_get_last_message();
}
?>
Enlaces de interés:
http://forums.cpanel.net/f5/definitive-freetds-installation-instuctions-88561.html
http://docs.cpanel.net/twiki/bin/view/EasyApache3/CustomConfigureFlags