FireStats error : FireStats: Unknown commit strategy
0
Compilar Extensión “mssql.so” para PHP 4

Extendiendo el artículo que escribí anteriormente sobre como Compilar la Extensión “mssql.so” para PHP 5, esta vez trate de hacerlo en un PHP 4 más o menos con el mismo procedimiento, pero ahora en un servidor de producción con RedHat Enterprise 3, donde me encontré varios problemas que no me permitían realizar de forma correcta la compilación.

Debido a lo anterior, documento en este artículo como logré compilar la extensión.

Después de terminar mi aplicación era necesario ejecutarla ya en un servidor de producción, sin embargo me tope con un RedHat con PHP 4.3.2, donde encontré algunos problemas, los cuales describo a continuación.

Primero me percate que existiera el paquete “php-dev” el cual en RedHat se llama “php-devel“, el cual no me fue difícil encontrar para la versión en la que quería compilar. Lo siguiente fue descargar el RPM de las fuentes de PHP, que tampoco me dio ningún problema, salvo que la instalación del paquete me lo dejó en: “/usr/src/redhat/SOURCES/php-4.3.2.tar.bz2“. Por lo que lo descomprimí con:

tar xvfj php-4.3.2.tar.bz2

Como estamos tratando con PHP 4 y no con mi cómodo PHP 5 de mi máquina, hay que cambiar algunas cosas en las variables de shell. Hay que recordar que es necesario estar dentro de el directorio de la extensión y ejecutar lo siguiente:

export PHP_PREFIX="/usr"
$PHP_PREFIX/bin/phpize

Traté de seguir los mismos pasos que describo en mi Artículo anterior, sin embargo mi primer problema salió en el “configure” de PHP, donde me arrojó el siguiente error:

Cannot find FreeTDS in known installation directories

Por lo que se puede deducir de forma lógica que el problema esta en la instalación de FreeTDS. Por alguna causa los paquete precompilados no funcionaban, así que después de varios intentos fallidos me arme de valor y me baje las fuentes para compilarlo yo mismo siguiendo las indicaciones de la página de FreeTDS:

wge http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar xvfz freetds-stable.tgz
cd freetds-0.64/
./configure --prefix=/usr/local/freetds
make
make install

Después de terminar la compilación e instalación traté de continuar con el “configure” de la extensión “mssql” sin embargo fue necesario cambiar la línea un poco, ya que es necesario indicarle a la extensión donde esta el FreeTDS para así continuar con el “make

./configure --with-mssql=/usr/local/freetds/ --with-php-config=$PHP_PREFIX/bin/php-config
make

Para mi mala suerte, el “make” me dió las siguientes lineas de
error.

xt/standard/php_standard.h:44,
 from /usr/src/redhat/SOURCES/php-4.3.2/ext/mssql/php_mssql.c:31:
/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory
In file included from /usr/include/openssl/ssl.h:179,
 from /usr/include/php/main/php_network.h:78,
 from /usr/include/php/ext/standard/fsock.h:38,
 from /usr/include/php/ext/standard/php_standard.h:44,
 from /usr/src/redhat/SOURCES/php-4.3.2/ext/mssql/php_mssql.c:31:
/usr/include/openssl/kssl.h:134: syntax error before "krb5_enctype"
/usr/include/openssl/kssl.h:136: syntax error before '*' token
/usr/include/openssl/kssl.h:137: syntax error before '}' token
/usr/include/openssl/kssl.h:149: syntax error before "kssl_ctx_setstring"
/usr/include/openssl/kssl.h:149: syntax error before '*' token
/usr/include/openssl/kssl.h:150: syntax error before '*' token
/usr/include/openssl/kssl.h:151: syntax error before '*' token
/usr/include/openssl/kssl.h:151: syntax error before '*' token
/usr/include/openssl/kssl.h:152: syntax error before '*' token
/usr/include/openssl/kssl.h:153: syntax error before "kssl_ctx_setprinc"
/usr/include/openssl/kssl.h:153: syntax error before '*' token
/usr/include/openssl/kssl.h:155: syntax error before "kssl_cget_tkt"
/usr/include/openssl/kssl.h:155: syntax error before '*' token
/usr/include/openssl/kssl.h:157: syntax error before "kssl_sget_tkt"
/usr/include/openssl/kssl.h:157: syntax error before '*' token
/usr/include/openssl/kssl.h:159: syntax error before "kssl_ctx_setkey"
/usr/include/openssl/kssl.h:159: syntax error before '*' token
/usr/include/openssl/kssl.h:161: syntax error before "context"
/usr/include/openssl/kssl.h:162: syntax error before "kssl_build_principal_2"
/usr/include/openssl/kssl.h:162: syntax error before "context"
/usr/include/openssl/kssl.h:165: syntax error before "kssl_validate_times"
/usr/include/openssl/kssl.h:165: syntax error before "atime"
/usr/include/openssl/kssl.h:167: syntax error before "kssl_check_authent"
/usr/include/openssl/kssl.h:167: syntax error before '*' token
/usr/include/openssl/kssl.h:169: syntax error before "enctype"
In file included from /usr/include/php/main/php_network.h:78,
 from /usr/include/php/ext/standard/fsock.h:38,
 from /usr/include/php/ext/standard/php_standard.h:44,
 from /usr/src/redhat/SOURCES/php-4.3.2/ext/mssql/php_mssql.c:31:
/usr/include/openssl/ssl.h:909: syntax error before "KSSL_CTX"
/usr/include/openssl/ssl.h:931: syntax error before '}' token
make: *** [php_mssql.lo] Error 1

Despues de preguntarle a Google, no tardé en encontrar la solución.

export CPPFLAGS='-I/usr/kerberos/include/'
./configure --with-mssql=/usr/local/freetds/ --with-php-config=/usr/bin/php-config
make

Y listo, eso fue todo, compiló y ejecutó correctamente, aunque eso sí, en el transcurso de la compilación de la extensión “mssql” para PHP4 se dijeron muchas maldiciones.

Espero que este artículo sea de ayuda si te esta pasando lo mismo.



Comentarios


Patrocinadores

Publicidad