Servidores-Apache

Esta sección contiene información específica sobre la instalación de PHP con Apache, tanto para la versión Unix como Windows. Las instrucciones de instalación con apache2 se encuentran en su propia página.

Instalando PHP con Apache en Unix

Se pueden seleccionar argumentos a usar con el comando configure de la linea 10 de más abajo, de la lista completa de opciones de configuración. Los números de versiones han sido omitidos aqui para asegurarse que las instrucciones no son incorrectas, debeis cambiar 'xxx' con los valores correctos de vuestros ficheros.

Ejemplo 3-5. Instrucciones de instalación para PHP 4 (Versión módulo compartido de Apache)

1.  gunzip apache_xxx.tar.gz
2.  tar -xvf apache_xxx.tar
3.  gunzip php-xxx.tar.gz
4.  tar -xvf php-xxx.tar
5.  cd apache_xxx
6.  ./configure --prefix=/www --enable-module=so
7.  make
8.  make install
9.  cd ../php-xxx
10. ./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install

  Si decides cambiar las opciones de configuración despues de la
  instalación, solamente se necesita repetir los tres últimos
  pasos. Solamente se necesita arrancar de nuevo Apache para que
  cargue el nuevo módulo. No es necesario recompilar Apache.

13. cp php.ini-dist /usr/local/lib/php.ini

  Se puede editar el fichero php.ini para configurar como PHP
  funciona. Si quereis tener este fichero en otra localización, podeis
  usar --with-config-file-path=/path en el paso 10.

14. Editar el fichero  httpd.conf ó srm.conf y comprobar que estas
    lineas existen y no están comentadas:
  
   AddType application/x-httpd-php .php

   LoadModule php4_module        libexec/libphp4.so
 
  Podeis elegir la extension que querais aqui, .php es simplemente una
  sugerencia. Se puede incluso tener .html y .php3 se puede
  añadir por asuntos de compatibilidad hacia atras.

  El "path" a la derecha de LoadModule debe de coincidir con el "path"
  del módulo PHP en vuestro sistema. Si habeis seguido los pasos desde
  el punto 1. no necesitais alterar nada.

15. Utilizar el procedimiento habitual que utiliceis para arrancar
    Apache. (Debeis de parar y arrancar Apache, no vale recargar
    (reload) usando una señal HUP ó USR1).

Dependiendo de vuestra instalación de Apache y variante Unix, existen numerosas maneras de parar y arrancar el servidor Apache. Más abajo teneis las maneras más típicas de parar y arrancar el servidor en diferentes instalaciones de apache/unix. /path/to/ se tiene que actualizar

1. En ciertas variantes de Linux y SysV:
/etc/rc.d/init.d/httpd restart

2. Usando el script apachectl :
/path/to/apachectl stop
/path/to/apachectl start

3. httpdctl y httpsdctl (Usando OpenSSL), similar a apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start

4. Usando mod_ssl, u otro servidor SSL, quizas querais parar y
     arrancar manualmente:
/path/to/apachectl stop
/path/to/apachectl startssl

La localización de los binarios apachectl y http(s)dctl suele variar. Si tu sistema tiene los comandos locate ó whereis ó which, podeis utilizarlos para localizar los programas de control de vuestro servidor.

Diferentes ejemplos de compilación de PHP para Apache:

./configure --with-apxs --with-pgsql

Esto creará una biblioteca compartida libphp4.so que será cargada por Apache usando una linea LoadModule en el fichero de configuración de Apache httpd.conf. Soporte para PostgreSQL es incorporado en la biblioteca libphp4.so.

./configure --with-apxs --with-pgsql=shared

Esto creará una biblioteca compartida libphp4.so que será cargada por Apache, pero creará tambien una biblioteca compartida pgsql.so que se puede cargar por PHP usando ó la directiva de la extensión en el fichero php.ini ó cargandola explicitamente en un script usando la función dl().

./configure --with-apache=/path/to/apache_source --with-pgsql

Esto creará una biblioteca libmodphp4.a, un fichero mod_php4.c y algunos otros pequeños ficheros y copiara todo al directorio src/modules/php4 en el directorio fuente de Apache. Apache hay que compilarlo entonces con --activate-module=src/modules/php4/libphp4.a y el sistema de generación de apache se encargará de crear el fichero libphp4.a y enlazarlo estáticamente al binario httpd. El soporte para PostgreSQL es incluido directamente en el binario httpd, asi que el resultado final en un solo fichero binario httpd que incluye todo el Apache y PHP.

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

Igual que el ejemplo anterior, excepto que el soporte para PostgreSQL no se incluye directamente en httpd, se crea una biblioteca compartida pgsql.so que hay que cargar en PHP, bien desde el fichero php.ini ó directamente usando la función dl().

Antes de escoger el método a utilizar para instalar PHP, debeis considerar los pros y los contras de cada método. Compilarlo como una biblioteca compartida tiene la ventaja de poder compilar Apache por separado y de no tener que recompilar todo si añadimos ó cambiamos PHP. Compilando PHP estaticamente en Apache significa que PHP cargará más rapidamente y se ejecutará más rapido. Para más información, vea la página de Apache sobre soporte DSO.

Nota: El fichero de configuración por defecto de Apache, httpd.conf, viene con una sección como esta:

User nobody
Group "#-1"

A menos que esto se cambie a "Group nogroup" ("Group daemon" tambien es muy común), PHP no podra abrir ficheros.

Nota: Asegurarse que la versión especificada de apxs cuando se usa --with-apxs=/path/to/apxs, es la version instaladada en tu sistema y no la versión que se encuentra en directorio con las fuentes de Apache.

Instalando PHP con apache 1.3.x en Windows

Existen dos maneras de utilizar PHP con Apache 1.3.x en Windows. Una es usar el binario CGI (php.exe), la otra es usar el módulo Apache DLL. En ambos casos, hay que parar el servidor Apache y editar el fichero de configuración httpd.conf para configurar Apache con PHP.

Hay que decir que el módulo SAPI es más estable ahora bajo Windows, recomendamos utilizarlo en vez del binario CGI, ya que es más transparente y seguro.

Aunque existen diferentes maneras de configurar PHP con Apache, estas son lo suficientemente simples como para que un iniciado pueda usarlas. Consultar la documentación de Apache para más información sobre directivas de configuración.

Si descomprimimos PHP en c:\php\, tal y como se describe en la sección Pasos para una instalación manual, necesitamos introducir estas lineas en el fichero de configuración de Apache para configurar el binario CGI:

La segunda linea de esta lista, se encuentra en la versión actual de httpd.conf, pero esta comentada. Recordar que teneis que cambiar c:/php/ con el "path" a vuestro directorio PHP.

Aviso

El uso de la opción CGI abre la posibilidad de posibles ataques a tu servidor. Por favor, leer la sección sobre Seguridad con la versión CGI para aprender como defenderse de estos ataques.

Si vais a utilizar PHP como módulo de Apache, debeis copiar php4ts.dll al directorio windows/system (para Windows 9x/Me), winnt/system32 (para Windows NT/2000) ó windows/system32 (para Windows XP), sobreescribiendo cualquier fichero antiguo. Una vez copiado, debeis modificar el fichero httpd.conf:

Despues de cambiar el fichero de configuración, recordar que teneis que arrancar de nuevo Apache, por ejemplo, NET STOP APACHE seguido de NET START APACHE, si ejecutais Apache como un Servicio Windows, ó como lo hagais normalmente.

Existen dos maneras para usar la característica de destacar el código fuente, sin embargo, dependerá de nuestra instalación para que funcionen. Si Apache esta configurado para usar PHP como módulo SAPI, se puede usar esta carcterística añadiendo la linea AddType application/x-httpd-php-source .phps al fichero httpd.conf en el mismo lugar en donde añadimos AddType application/x-httpd-php .php.

Si Apache esta configurado para usar PHP como binario CGI, debereis utilizar la función show_source(). Para ello, crear un script PHP y añadir este código <?php show_source ("original_php_script.php"); ?>. Sustituir original_php_script.php con el nombre del fichero del que quereis presentar el código fuente.

Nota: En Apache para Windows, todos los "backslashes" en un "path", p.ej. "c:\directory\file.ext", deben de convertirse a "forward slashes" , "c:/directory/file.ext".