¿Cómo compilar php con soporte para sybase_ct?

Imagen de Epe

Instalar yum-utils (para poder usar yumdownloader) y el freetds (que es el que a la final permitirá que el sybase se conecte)


yum install yum-utils freetds-devel freetds

Instalar el fuente de php:

yumdownloader --source php

Una vez instalado el src.rpm del ultimo php, editar php.spec


cd /usr/src/redhat/SPECS
vi php.spec

Sobre la linea 454 te debe aparecer una sección de código algo así:


%configure \
--cache-file=../config.cache \
--with-libdir=%{_lib} \
--with-config-file-path=%{_sysconfdir} \
--with-config-file-scan-dir=%{_sysconfdir}/php.d \
--disable-debug \
--with-pic \
--disable-rpath \
--without-pear \
--with-bz2 \
--with-curl \
--with-exec-dir=%{_bindir} \
--with-freetype-dir=%{_prefix} \

Agregarle --with-sybase_ct=/usr \, se vería así:


%configure \
--cache-file=../config.cache \
--with-libdir=%{_lib} \
--with-config-file-path=%{_sysconfdir} \
--with-config-file-scan-dir=%{_sysconfdir}/php.d \
--disable-debug \
--with-pic \
--disable-rpath \
--without-pear \
--with-bz2 \
--with-curl \
--with-sybase_ct=/usr \
--with-exec-dir=%{_bindir} \

repito, sólo agregué una nueva linea (ver la penultima)

grabar el php.spec y ejecutar:


rpmbuild -ba php.spec

Si algo fallara, es algún paquete de desarrollo que se te ha olvidado (libidn, libidn-devel, libjpeg-devel, etc). Estos paquetes puedes instalarlos con yum install en caso de que notes que falta. Por ejemplo nosotros instalamos todos estos para poder compilar bien:


yum install gd-devel ncurses-devel libpng-devel pam-devel libstdc++-devel \
openssl-devel sqlite-devel zlib-devel pcre-devel libtool \
gcc-c++ krb5-devel libc-client-devel cyrus-sasl-devel openldap-devel \
mysql-devel postgresql-devel unixODBC-devel libxml2-devel \
net-snmp-devel libxslt-devel libxml2-devel freetype-devel \
bzip2-devel curl-devel db4-devel expat-devel gmp-devel \
aspell-devel httpd-devel libidn-devel libjpeg-devel

Al final en /usr/src/redhat/RPMS/i386 te quedará una lista de todos los rpm obtenidos mediante el proceso.

Sugiero que no se actualice automáticamente el php pues una nueva versión te borrará la vieja, editar /etc/yum.repos.d/CentOS-Base.repo y al final de cada repo agregar: exclude=php*

Por ejemplo mi repo updates quedaría así:


[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo
=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
exclude=php*

Esta última línea tienes que agregarla a cada repo, sino una actualización te eliminará tu lindo php. (sobre todo ponle al repo updates que viene inmediatamente después del repo base)

Algunas personas utilizan sybase como base de datos y la mayoría hacen el patiñero (cochinada) de compilar desde fuentes el freetds, php y mil cosas más, sin darse cuenta que es solamente instalar el paquete de freetds y agregar el módulo de sybase_ct al php (que es precisamente lo que he hecho al compilar el php nuevamente).

Qué logramos con tener estos rpms? Ahora cada vez que quieras instalar tu php con sybase, lo unico que tendrás que hacer es instalar estos rpms, te los puedes llevar en una flash o tenerlos en algún lugar en internet. Es decir, no tienes que recompilar una y otra vez la misma cosa.. esto es lo que nos diferencia de los cacharreros de barrio que todo lo quieren recompilar en la misma máquina sin tener en cuenta el día que tengan bajo su control decenas de máquinas con la misma situación.

La próxima vez que salga una actualización de php debes realizar el mismo proceso anterior EN UNA SOLA MAQUINA y usar el mismo rpm obtenido para las demás máquinas.

Comentarios

Hola EPE Muchas gracias por

Imagen de NEO

Hola EPE
Muchas gracias por este post.
Alguna vez hace años me tocó hacer lo mismo, y en realidad me costó mucho trabajo. Claro que no existía un repo con los paquetes freetds-devel freetds, es mas recién había salido el proyecto freetds, me tocó hacer el "patiñero" que mencionas jeje.
El proyecto fretds es buenaso y te brinda compatibilidad para conectarte a sqlserver también... Incluso funciona mas rápido que si te conectas nativamente desde terminales windows..

Gracias EPE

Saludos
NEO

sí, esto me comentó la

Imagen de Epe

sí, esto me comentó la persona que usará tds.. que sirve para microsoft SQL.

así que aprovecho tu aclaración para comentar: este howto debe funcionar con muy poca modificación para acceder a sql server con freetds.. aunque la mayoría usa php-mssql pero nunca está de más saberlo... seguramente será rápidísimo.

Un gusto saber de tí!

Saludos
epe
--
NuestroServer.com
Ecuador: +(593) 9 9246504, +(593) 2 600 4454
USA: +1 305 359 4495, España: +34 91 7617884


Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre

EPE Tienes un ejemplo de

Imagen de NEO

EPE

Tienes un ejemplo de conectividad a una instancia en SQLSERVER que pongas aquí de ejemplo por favor.

Tengo problemas para realizar la conectividad. Luego de instalar freetds ya tengo las funciones de conectividad pero no logro concretarla.

Saludos
NEO