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 (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. Ahora, configurar vuestro PHP. En este paso podeis configurar PHP
    con diferentes opciones, como por ejemplo que extensiones estaran
    dispobibles. Podeis ejecutar ./configure --help para obtener una
    lista con las opciones que podeis usar. En nuestro ejemplo,
    configuramos con Apache y soporte MySQL. Vuestro path a apxs puede
    diferir del nuestro, dependiendo donde lo tengais instalado. 

      ./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 ultimos
    pasos. Solamente se necesita arrancar de nuevo Apache para que
    cargue el nuevo modulo. No es necesario recompilar Apache.

    Tener en cuenta que si no se especifica lo contrario, 'make install'
    tambien instala PEAR, diferentes herramientas PHP tal como phpsize,
    PHP CLI y mas.

13. Configurar vuestro fichero php.ini  

     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 localizacion, podeis
    usar --with-config-file-path=/path en el paso 10.

    Si usais el fichero php.ini-recommended, asegurarse de leer la
    lista de cambios en este fichero, ya que afectan al modo de
    funcionamiento de PHP.

14. Editar httpd.conf para cargar el modulo PHP. El path a la derecha
    de 'LoadModule' debe de coincidir con el path donde el modulo PHP
    se encuentre en vuestro sistema. El comando que habeis ajecutado
    anteriormente 'make install' puede que haya anadido esto, pero
    asegurarse de comprobar que el cambio ha sido hecho.

    Para PHP 4:
            
      LoadModule php4_module libexec/libphp4.so

    Para PHP 5:
                      
      LoadModule php5_module libexec/libphp5.so
      
15. Y en la seccion 'AddModule' en httpd.conf, anadir:

    Para PHP 4:
    
      AddModule mod_php4.c
      
    Para PHP 5:
    
      AddModule mod_php5.c

16. Tenemos que decirle a Apache que extension vamos a utilizar en
    nuestros scripts PHP. Podemos utilizar la extension
    .php para PHP aunque podemos anadir la extension que queramos
    separadas con un espacio. En nuestro ejemplo utilizaremos por
    ejemplo .php y .phtml 

      AddType application/x-httpd-php .php .phtml

    Tambien se sulele utilizar la extension .phps para mostrar el
    codigo PHP coloreado. Para ello tenemos que anadir la siguiente linea:

      AddType application/x-httpd-php-source .phps

17. 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

Ejemplo 3-6. Ejemplos de comandos para rearrancar Apache

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".