viernes, 17 de febrero de 2012

Volver a compilar PHP5 con soporte MySQL Suse Sever 11

Se cuenta con un Suse Linux Enterprise Server 11 x86_x64, con conexiones a oracle y postgres, servicio web apache (httpd-2.2.14) y php (php-5.3.1) ambos descargados de paginas oficiales construidos, compilados e instalados (ya saben ./configure, make y make install).

Todo funciona hasta ese punto de maravilla de hecho el info.php mostraba todo en orden. Se tiene mysql (con una base de datos), pero mysql no fue tomado en cuenta durante la instalación o configuración de php.

Se ha creado un sitio con php y conexion a mysql, asi que me vi en el problema de tener q re-compilar php5. Entonces me dije a mi mismo (-despues de analizarlo) ¡facil! he hize lo siguiente:

1.-detuve el servicio de apache como root:

yo:~#/opt/httpd-2.2.14/bin/./apachectl stop

2.-dentro de la carpeta donde se descargó el php-5.3.1 (/home/yo/php-5.3.1)

yo:~#./configure --prefix=/opt/php-5.3.1 --with-apxs2=/opt/httpd-2.2.14/bin/apxs --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib/ --enable-sigchild --with-pgsql --enable-ftp --with-mysql=/usr/bin/ --with-libdir=lib64

ya que en ese prefix esta instalado apache y php, respectivamente y cargar modulos o libs de oracle, postgresql y donde se encuentra mysql.

NOTA1: yo no uso lamp ni xampp, el porque? de este modo se donde queda instalado. además en este caso tendría que cambiar muchas cosas o configurar todo de nuevo o quiza tendria 2 apaches o php's instalados, o no se que pasaría si hubiese instalado uno de estos paquetes.

Mi primer error fue la falta de headers:
configure: error: Cannot find MySQL header files under yes.
Note that the MySQL client library is not bundled anymore!

Y pues en ubuntu se que el problema es la falta de libmysqlclient15-dev (se soluciona con un sudo apt-get install libmysqlcient15-dev o desde el gestor de paquetes), pero no tengo ubuntu.. mm grrrr

trate de buscar rpm, en el YAST. y nada... asi que procedí a re-instalar mysql, saque respaldo de la bd y listo desde yast instale mysql.. y al quere repetir el paso 2 (compilar), el mismo error asi que mejor busque ( rpm qa | grep -i mysql) y desinstale todo lo relacionado a mysql (#rpm -e MySQL-server-xx.xx bla.bla MySQL-client-xx.bla.bla)

3.- Descargue de la pagina oficial el mysql ( para SLES11-x86_64 todo el paquete de la comunidad “MySQL-5.5.20-1.sles11.x86_64” de 125.6MB)

4.- Instale los que vienen dentro: client, server, devel, embedded, shared y hasta el test, para no fallarle jejej (#rpm -ivh MySQL-server-5.5.20-1.sles11.x86_64.rpm MySQL-client-5.5.20-1.sles11.x86_64.rpm MySQL-devel-5.5.20-1.sles11.x86_64.rpm MySQL-shared-5.5.20-1.sles11.x86_64.rpm MySQL-embedded-5.5.20-1.sles11.x86_64.rpm MySQL-test-5.5.20-1.sles11.x86_64.rpm
)

5.- compruebo la existencia de sock (#find / | grep sock), que anteriormente me ocasionaba conflictos:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

pero si existe lo que me hacia falta era arrancar mysql
En caso de que no se encuentre yo recomiendo desinstalar y descargar el paquete completo ya que eso me ocasionaba mucho conflicto, se debía a que no había instalado todo.

6.- arrancamos mysql; en mi caso:
#/etc/init.d/./mysql start

7.- A continuación incio sesión de mysql

#mysql -p

NOTA2: si aquí te sale el error del paso 5.. recomiendo descargar e instalar nuevamente. Si alguien tiene una solución, agradecería. Ya que no lo conseguí.
(tambien puedo usar si ya tengo un usuario agregado al grupo mysql: #mysql -u admin -p)

#mysql -u admin -p
Enter password:*****

y sorpresa
adentro... jejej.. de peluche
8- Modifico el php.ini, habiltando las extensiones para mysql (quitando el ; antes de cada extensión):

extension=gd.so
extension=msql.so
extension=mysql.so
extension=mysqli.so

9.- Vuelo al compilar e instalar php, estando en la carpeta de descarga de php, hago mención ya que se encuentra instalado, pero debo tener el que se descargó para volver a compilar(re-compilar o volver a instalar como quieran llamarlo):

yo:~#./configure --prefix=/opt/php-5.3.1 --with-apxs2=/opt/httpd-2.2.14/bin/apxs --with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib/ --enable-sigchild --with-pgsql --enable-ftp --with-mysql=/usr/bin/ --with-libdir=lib64

yo~#make (aqui tarda un poquito, sean pacientes.. ok)
yo~#make install
yo~#make clean

10.- Y por ultimo iniciamos APACHE jeje
#/opt/httpd-2.2.14/bin/./apachectl stop

Y todo quedo de peluche, cualquier duda por este medio o a mi correo electronico, con gusto tratare de ayudar.

No hay comentarios: