javoaxian cambió a: javoaxian.me
Este blog se mantendrá como histórico del nuevo javoaxian.me. Por tal motivo, sólo serán creados post que harán referencia a los del nuevo blog. Si hay dudas y comentarios, favor de hacerlos en javoaxian.me.

viernes, 11 de abril de 2008

Instalar PHP desde fuentes en GNU/Linux

En artículos anteriores ya expliqué como instalar Apache y Postgresql, por lo tanto el día de hoy explicaré como instalar PHP.

Como primer pasó, instalaremos Apache como indico aquí.

Si queremos conectar PHP con un manejador de base de datos, como pueden ser Oracle, PostgreSQL, MySQL, Sybase, etc., deberemos tener instalados y configurados estos manejador para poder configurar PHP para que se conecte al que deseemos. Si quieren instalar PostgreSQL aquí está el artículo que hice para realizar su instalación.

Para comenzar, descargaremos PHP. En este momento la versión vigente es la 5.2.5, por lo tanto descargaremos el archivo PHP 5.2.5 (tar.bz2).

Una vez descargado el archivo, procederemos a instalarlo. Para ejemplificar ésto, realizaremos la instalación en el directorio /usr/local/php.

Nos convertiremos en usuario root.

javoaxian@darthmaul:~$ su -

Una vez que ya somos root, copiaremos el archivo que descargamos al directorio /usr/local/src y nos moveremos a dicho directorio:

root@darthmaul:~# cp /ruta/de/descarga/archivo/php-5.2.5.tar.bz2 /usr/local/src/
root@darthmaul:~# cd /usr/local/src

Descomprimiremos el archivo y entraremos al directorio creado:

root@darthmaul:~# tar -jxvf php-5.2.5.tar.bz2
root@darthmaul:~# cd php-5.2.5

Iniciaremos el proceso de configuración, para ésto, indicaremos en el siguiente comando si deseamos conectarlo con algún manejador de base de datos, por ejemplo, pondremós alguna de las siguientes opciones dependiendo el manejador de base de datos:
  • PostgreSQL: --with-pgsql=/ruta/donde/esta/instalado/postgres
  • MySQL: --with-mysql=/ruta/donde/esta/instalado/mysql
  • Oracle: --with-oci8=/ruta/donde/esta/instalado/oracle
  • Sybase: --with-sybase=/ruta/donde/esta/instalado/sybase

También deberemos indicarle donde puede encontrar el comando apxs de apache, para ésto supondré que apache está instalado en /usr/local/apache

root@darthmaul:~# ./configure --prefix=/usr/local/php --with-pgsql=/opt/pgsql --with-apxs2=/usr/local/apache/bin/apxs

Si aparece un error semejante a éste:

configure: error: xml2-config not found. Please check your libxml2 installation.

Deberán instalar el paquete libxml2-dev, ésto es en el caso de cualquier distribución basada en Debian como Ubuntu. En otras distribuciones deberán buscar este paquete o su correspondiente.

Para instalarlo en distribuciones basadas en Debian:

root@darthmaul:~# apt-get install libxml2-dev

Una vez instalado, volvemos a ejecutar el comando configure:

root@darthmaul:~# ./configure --prefix=/usr/local/php --with-pgsql=/opt/pgsql --with-apxs2=/usr/local/apache/bin/apxs

Si pasó la configuración, ejecutaremos los siguientes comandos:

root@darthmaul:~# make
root@darthmaul:~# make install

Copiamos el archivo php.ini-dist al directorio /usr/local/php/lib/ y le cambiaremos el nombre a php.ini

root@darthmaul:~# cp php.ini-dist /usr/local/php/lib/php.ini

Ahora deberemos editar el archivo httpd.conf de apache, el cual en este ejemplo se encuentra en el directorio /usr/local/apache/conf/. En dicho archivo deberemos buscar las siguientes líneas:

    #
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz

Y arriba de éstas agregaremos las líneas respectivas de PHP para que nos quede esa sección de esta forma:

    #PHP5
AddType application/x-httpd-php .php .html .phtml .php3 .php4 .php5 .htm
AddType application/x-httpd-php-source .phps

#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz

Aquí le estamos indicando a apache que los archivos con extensiones .php .html .phtml .php3 .php4 .php5 .htm pueden interpretar el código de PHP.

Si tienen el proceso de apache funcionando, deberán darlo de baja:

root@darthmaul:~# /usr/local/apache/bin/apachectl stop

Y ahora deberán levantarlo:

root@darthmaul:~# /usr/local/apache/bin/apachectl start

Ahora apache ya puede interpretar nuestras páginas con código de PHP.

Si queremos probar que esté funcionando Apache con PHP, podemos poner un archivo llamado phpinfo.php dentro del directorio /usr/local/apache/htdocs/ (solo el usuario root puede escribir en este directorio para fines de este ejemplo) y agregarle la siguiente línea:

<? phpinfo(); ?>

Ahora en nuestra navegador ingresamos a la siguiente dirección: http://localhost/phpinfo.php

Recuerda que si tu apache está corriendo en otro puerto, como por ejemplo el 8080, deberás ingresar de la siguiente manera desde el navegador: http://localhost:8080/phpinfo.php

Donde nos aparecerá algo como ésto:


Ya tenemos instalado y funcionando PHP.

7 comentarios:

Anónimo dijo...

javier, muchas gracias por los post, en verdad que me sirvieron muchisimo, estan super explicados hasta yo los entendi imaginate jaja bueno de nuevo gracias y que tengas lindo fin de semana

YARA*

javoaxian dijo...

Hola, que bueno que te sirvieron :D ese era el objetivo

Saludos

Anónimo dijo...

Grande javoaxian, muy buen tutorial, me sirvio bastante

Marycarmen Brandt dijo...

Sencillamente, excelente! Gracias miles por la info

Anónimo dijo...

Me e pasado 1 dia leyendo tu Guia de php y de apache.
Gracias Compañero de Verdad¡

Anónimo dijo...

Un Solo dato
verificar que este bien pues el php.ini
porque segui el tutorial y al dejarlo en lib/php.ini no me tomaba los cambios.


$inipath = php_ini_loaded_file();

if ($inipath) {
echo 'Loaded php.ini: ' . $inipath;
} else {
echo 'A php.ini file is not loaded';
}



con eso detecta si esta bien alojado el php.ini , porque tuve una sarta de problemas al no tener el php.ini donde debiera estar.

Saludos y Brota, Tremendo Blog ¡

Francko dijo...

He segido el post tal cual, pero me sigue diciendo The pgsql driver is not currently installed..!

Corro el phpinfo() y dice que si tengo habilitado el postgres.! Sabes por que sucede esto?