viernes, 10 de abril de 2009

Conector MSSQL para PHP5 en Debian Squeeze

Se presento el caso siguiente.

Se tiene una base de datos MSSQL, por que asi lo requeria el software, y la cuestion era como hacer las consultas a esa base de datos con Linux, PHP, Apache.
Buscando encontre un buen howto de HowToForge, lugar donde se encuentra muy buenos tutos.

Paso 1

nano /etc/apt/sources.list

deb http://ftp.debian.org testing main contrib non-free
deb-src http://ftp.debian.org testing main contrib non-free

deb http://debian.ludost.net/debian/ testing main contrib non-free
deb-src http://debian.ludost.net/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib
deb-src http://security.debian.org/ testing/updates main contrib

#apt-get update

#apt-get dist-upgrade

#apt-get install build-essential debhelper

#apt-get install tdsodbc

Paso2:

Para compilar php5-mssql package se necesita el paquete completo de Freetds

#cd /usr/src/
#mkdir -p /usr/src/freetds
#cd /usr/src/freetds
#wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
#tar -zxvf freetds-stable.tgz
#cd freetds-0.82
#./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib --enable-dbmfix --with-gnu-ld
#make
#make install

Paso 3:
obtenemos las fuentes del php5 en la carpeta /usr/src
#cd /usr/src
#apt-get source php5

Obteniendo todas las dependencias
#apt-get build-dep php5

Paso 4:
Luego ir al directorio php5-5.2.6:
#cd php5-5.2.5

Paso 5:
Ahora modificamos las directivas

nano debian/modulelist

buscamos la linea:
mysql MYSQL

y colocamos debajo:
mssql MSSQL

Guardamos los cambios

Paso 6:
Ahora modificamos el archivo
nano debian/rules

buscamos la siguiente linea que dice:

--with-mysql=shared,/usr

y debajo de ella colocamos

--with-mssql=shared,/usr/local/freetds \

Tener mucho cuidado con los espacios y tabulaciones, quiza no compile.

Paso 7:
Finalmente modificamos el archivo debian/control y agregamos al final
lo siguiente:

Package: php5-mssql
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, ${php:Depends}, php5-common (= ${Source-Version})
Description: MSSQL module for php5
This package provides a module for MSSQL using FreeTDS.
.
PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed
from C, Java and Perl with a couple of unique PHP-specific features thrown
in. The goal of the language is to allow web developers to write
dynamically generated pages quickly.

Ahora ejecutamos el siguiente comando

Paso 8:
dpkg-buildpackage


/usr/src/php5-5.2.6.dfsg.1/ext/posix/posix.c:441: warning: implicit declaration of function ‘getsid’
/usr/src/php5-5.2.6.dfsg.1/ext/posix/posix.c: In function ‘zif_posix_uname’:
/usr/src/php5-5.2.6.dfsg.1/ext/posix/posix.c:471: error: ‘struct utsname’ has no member named ‘domainname’
make[1]: *** [ext/posix/posix.lo] Error 1
make[1]: se sale del directorio `/usr/src/php5-5.2.6.dfsg.1/apache2-build'
make: *** [build-apache2-stamp] Error 2
dpkg-buildpackage: failure: debian/rules build gave error exit status 2

Googleando encontre que era un bug y que era solucionado con la version
php5/5.2.9.dfsg.1-1 de la version unstable

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521098

Entonces actualizamos nuestro sources.list, modificamos estas lineas para que apunte a sid

deb http://ftp.debian.org sid main contrib non-free
deb-src http://ftp.debian.org sid main contrib non-free

ejecutamos un
#apt-get update

ahora si repetimos desde el paso 3, la version de php varia ahora es:
php5-5.2.9.dfsg.1

Sin ningun problema obtenemos nuestros paquetes php5 en el directorio
#cd /usr/src

El paquete que se necesita es
# dpkg -i php5-mssql_5.2.9.dfsg.1-1_i386.deb

Y listo

colocamos el clasico de clasicos, el archivo info.php

#nano info.php

phpinfo ();
?>

Lo ejecutamos y podremos ver que carga




Saludos

Fuente:
http://how2forge.com/enabling-mssql-php5-debian-lenny

No hay comentarios.: