Apache 1.3.x sobre sistemas Unix

Esta sección contiene notas y consejos específicos a instalaciones Apache de PHP sobre plataformas Unix. También se tienen instrucciones y notas para Apache 2 en una página por separado.

Se pueden seleccionar argumentos para agregar a configure en la línea 10 debajo de la lista de opciones principales de configure y de opciones específicas a extensiones descritas en sus respectivos lugares en el manual. Los números de versión han sido omitidos aquí, para asegurar que las instrucciones no sean incorrectas. Se necesita reemplazar las 'xxx' aquí con los valores correctos de los ficheros.

Ejemplo #1 Instrucciones de instalación (Versión de módulo compartido de Apache) para PHP

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, se configura PHP.  Aquí es donde se personaliza PHP
    con varias opciones, como cuales extensiones se habilitarán.  Realizar un
    ./configure --help para obtener una lista de opciones disponibles.  En el ejemplo
    se realiza un configure simple con soporte para Apache 1 y MySQL.  La
    ruta de acceso a apxs puede diferir del ejemplo.

      ./configure --with-mysql --with-apxs=/www/bin/apxs

11. make
12. make install

    Si se decide cambiar las opciones de configure después de la instalación,
    solamente se necesita repetir los últimos tres pasos. Sólo hace falta
    reiniciar apache para que el nuevo módulo tenga efecto. Una recompilación de 
    Apache no es necesaria.
  
    Nótese que a menos que se mencione lo contrario, 'make install' también instalará PEAR,
    varias herramientas de PHP tales como phpize, instalará la línea de comando (CLI) de PHP, y más.

13. Preparar el fichero php.ini:

      cp php.ini-development /usr/local/lib/php.ini

    Se puede editar el fichero .ini para fijar las opciones de PHP.  Si se prefiere
    php.ini en otra ubicación, utilice --with-config-file-path=/some/path en
    el paso 10. 
    
    Si en vez de ello se elige php.ini-production, asegurarse de leer la lista
    de cambios en el interior, ya que éstos afectan como se comporta PHP.

14. Editar httpd.conf para cargar el módulo de PHP.  La ruta de acceso al lado derecho
    de el enunciado LoadModule debe apuntar a la ruta del módulo de PHP
    en su sistema.  El make install anterior podría haber agregado esto ya
    por usted, pero asegúrese de revisarlo.

      LoadModule php5_module libexec/libphp5.so

15. Y en la sección AddModule de httpd.conf, en algún lugar por debajo de
    ClearModuleList, agregar esto:
    
      AddModule mod_php5.c

16. Indicar a Apache que procese ciertas extensiones como PHP.  Por ejemplo,
    hacer que Apache procese la extensión .php como PHP.  Se podría
    hacer que cualquier extensión o extensiones sean procesadas como PHP simplemente añadiendo más, con
    cada una separada por un espacio.  Se agregará .phtml para demostrarlo.

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

    También es común configurar la extensión .phps para mostrar fuentes resaltadas de PHP,
    ésto puede hacerse con:
    
      AddType application/x-httpd-php-source .phps

17. Utilice el procedimiento normal para iniciar el servidor Apache. (Se debe
    detener y reiniciar el servidor, no sólo causar que el servidor recargue utilizando
    una señal HUP o USR1.)

Alternativamente, para instalar PHP como un objeto estático:

Ejemplo #2 Instrucciones de instalación (Instalación de módulo estático para Apache) para PHP

1.  gunzip -c apache_1.3.x.tar.gz | tar xf -
2.  cd apache_1.3.x
3.  ./configure
4.  cd ..

5.  gunzip -c php-5.x.y.tar.gz | tar xf -
6.  cd php-5.x.y
7.  ./configure --with-mysql --with-apache=../apache_1.3.x
8.  make
9.  make install

10. cd ../apache_1.3.x

11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
    (¡La línea anterior es correcta! Sí, ya se sabe que libphp5.a aún no existe en esta
    etapa. No se supone que deba. Será creado.)

12. make
    (ahora se debe tener un binario httpd que puede ser copiado al directorio bin de Apache si
    esta es la primera instalación entonces se necesita dar "make install" también)

13. cd ../php-5.x.y
14. cp php.ini-development /usr/local/lib/php.ini

15. Se puede editar el fichero /usr/local/lib/php.ini para fijar las opciones de PHP.
    Editar el fichero httpd.conf o srm.conf y añadir:
    AddType application/x-httpd-php .php

Dependiendo de la instalación de Apache y la variante de Unix, hay muchas maneras posibles de detener y reiniciar el servidor. Abajo hay algunas líneas típicas utilizadas para reiniciar el servidor, para diferentes instalaciones apache/unix. Se debe reemplazar /path/to/ con la trayectoria a estas aplicaciones en el sistema.

Ejemplo #3 Comandos de ejemplo para reiniciar Apache

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

2. Utilizando scripts apachectl:
/path/to/apachectl stop
/path/to/apachectl start

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

4. Usando mod_ssl, u otro servidor SSL, que se quiera detener e iniciar
manualmente:
/path/to/apachectl stop
/path/to/apachectl startssl

Las ubicaciones de los binarios apachectl y http(s)dctl varían frecuentemente. Si el sistema tiene los comandos locate o whereis o which, éstos pueden ayudar en encontrar los programas de control del servidor.

Distintos ejemplos de compilaciones de PHP para apache son como sigue:

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

Esto creará una librería compartida libphp5.so que se carga en Apache utilizando una línea LoadModule en el fichero de Apache httpd.conf. El soporte para PostgreSQL está incluido dentro de esta librería.

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

Esto creará una librería compartida libphp5.so para Apache, pero también creará una librería compartida pgsql.so que se carga en PHP ya sea usando la directiva de extensión en el fichero php.ini o cargándola explícitamente en un script utilizando la función dl().

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

Esto creará una librería libmodphp5.a, un mod_php5.c y algunos ficheros acompañantes y cópiese estos dentro del directorio src/modules/php5 en el árbol de fuentes de Apache. Entonces se compila Apache utilizando --activate-module=src/modules/php5/libphp5.a y el sistema de compilación de Apache creará libphp5.a y lo enlazará estáticamente dentro del binario httpd. El soporte para PostgreSQL se incluye directamente dentro de este binario httpd, así que el resultado final aquí es un binario httpd sencillo que incluye todo Apache y todo PHP.

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

Igual que en el anterior, excepto que en vez de incluir soporte para PostgreSQL directamente en el httpd final se obtiene una librería compartida pgsql.so que puede cargarse dentro de PHP desde ya sea el fichero php.ini o directamente utilizando dl().

Cuando se elige compilar PHP de diferentes maneras, se deben considerar las ventajas y desventajas de cada método. Compilar como objeto compartido significará que se puede compilar apache por separado, y no se tiene que recompilar todo cuando se agrega o se cambia algo en PHP. Compilar PHP dentro de apache (método estático) significa que PHP cargará y ejecutará más rápido. Para más información, ver la » página web de Apache sobre soporte DSO.

Nota:

El httpd.conf por omisión de Apache actualmente se distribuye con una sección que se parece a esto:

User nobody
Group "#-1"
A menos que se cambie esto a "Group nogroup" o algo como esto ("Group daemon" es también muy común) PHP no será capaz de abrir ficheros.

Nota:

Asegúrese de que se especifica la versión instalada de apxs cuando se utiliza --with-apxs=/path/to/apxs . NO se debe utilizar la versión de apxs que está en las fuentes de apache, si no la que en realidad está instalada en el sistema.