Esta sección contiene las notas y consejos de instalación de PHP con el servidor
Apache HTTP Server 2.x en sistemas Linux y similares a Unix.
Advertencia
Usar PHP-FPM en su lugar
No utilice mod_php para nuevas
instalaciones. Las instrucciones de esta página se mantienen
como referencia histórica y para los casos excepcionales en que se requiere
incrustar PHP directamente en el proceso de Apache httpd.
Para todos los despliegues modernos, use
PHP-FPM (FastCGI Process Manager)
con el módulo mod_proxy_fcgi de Apache httpd. PHP-FPM
ofrece una mejor gestión de recursos, aislamiento de procesos, reinicio
independiente de PHP sin reiniciar Apache httpd, y compatibilidad con el
MPM event de Apache httpd (el predeterminado desde
Apache httpd 2.4). Las principales distribuciones Linux lo incluyen como
configuración por defecto.
El método mod_php incrusta PHP directamente en cada
proceso worker de Apache httpd. A menos que PHP se compile con seguridad
de hilos (--enable-zts), mod_php
requiere el MPM prefork, lo que limita significativamente
la concurrencia. Si se procede con mod_php, se deben
comprender plenamente las implicaciones de rendimiento y seguridad.
Estas instrucciones se aplican a Apache httpd 2.4, que es la única rama de
versión compatible de Apache httpd. Las versiones anteriores (2.2 y anteriores)
están en fin de vida y no deben utilizarse.
-
Descargue Apache httpd desde el sitio anterior y descomprímalo:
-
De la misma manera, descargue y descomprima las fuentes de PHP:
-
Compile e instale Apache httpd. Consulte la documentación sobre la instalación
de Apache httpd para más detalles sobre la compilación de este software.
Tenga en cuenta que mod_php requiere el MPM
prefork a menos que PHP sea compilado con seguridad de
hilos (--enable-zts). Si tiene intención de usar PHP-FPM
(recomendado), puede usar el MPM event predeterminado y
pasar directamente a las
instrucciones de instalación de PHP-FPM.
-
Ahora que se tiene Apache httpd 2.x.NN disponible bajo /usr/local/apache2,
configurado con soporte para la carga de módulos y el MPM prefork.
Para probar la instalación, utilice el procedimiento
normal para iniciar el servidor Apache httpd, es decir:
y deténgalo para continuar con la configuración de PHP:
-
Ahora, configure y compile PHP. Será en este momento
cuando se podrá personalizar PHP con las diversas opciones disponibles,
como la lista de extensiones a activar. Ejecute
./configure --help para obtener la lista de opciones disponibles. En nuestro ejemplo, realizaremos
una configuración simple, con Apache httpd y soporte MySQL.
Si se ha construido Apache httpd desde las fuentes, tal como se describe anteriormente,
el siguiente ejemplo debería ser correcto en cuanto a las rutas hacia apxs, pero si
se ha instalado Apache httpd de otra manera, se deberán tener en cuenta las especificidades y ajustar las rutas apxs en consecuencia. Tenga en cuenta que, según las distribuciones, podría ser necesario renombrar apxs a apxs2.
Si se decide modificar las opciones de configuración después de la instalación,
se deberán ejecutar nuevamente las etapas configure, make
y make install.
Entonces solo se necesitará reiniciar Apache para que el nuevo módulo surta efecto.
Una recompilación de Apache httpd no es necesaria.
Tenga en cuenta que, salvo indicaciones contrarias, make install también instalará
» PEAR, así como diversas herramientas PHP como
phpize, PHP CLI y
mucho más.
-
Configurar el archivo php.ini
Se debe editar el archivo .ini para definir las opciones PHP.
Si se prefiere colocar php.ini en otro directorio, utilice
la opción --with-config-file-path=/some/path en la etapa 5.
Si se elige el archivo php.ini-production, asegúrese de leer la lista
de modificaciones correspondiente ya que puede afectar considerablemente la forma
en que PHP funcionará.
-
Edite el archivo httpd.conf para cargar el módulo PHP. La ruta especificada
a la derecha de la cadena LoadModule, debe corresponder a la ruta del sistema del módulo
PHP. El comando make install anterior debería haber realizado esta operación
por usted, pero una simple verificación permitirá asegurarse.
-
Indique a Apache httpd que analice ciertas extensiones como scripts PHP.
Por ejemplo, deje que Apache httpd pase a PHP los archivos cuya extensión es
.php.
En lugar de utilizar solo la directiva AddType de Apache,
se desea evitar cualquier riesgo potencialmente peligroso, cuando
se descarga y crea un archivo como exploit.php.jpg,
de ejecución PHP. Utilizando este ejemplo, se puede tener cualquier
extensión analizada por PHP. Se ha añadido .php para el ejemplo.
O, si se desea permitir que los archivos .php, .php2,
.php3, .php4, .php5,
.php6, y .phtml sean
analizados por PHP, pero nada más, se utilizará esto:
Y para permitir que los archivos .phps sean manejados por el filtro del código
fuente de PHP, y así, ser mostrados como código fuente con coloración
sintáctica, utilice esto:
Para permitir el uso de un archivo PHP como manejador por defecto cuando no se
encuentra ningún otro manejador, por ejemplo al utilizar un motor de enrutamiento, se
puede usar la directiva FallbackResource.
Dado que la directiva SetHandler se aplica tanto si el archivo existe como
si no, y FallbackResource solo se aplica si aún no se ha definido un
manejador, puede ser necesario utilizar la directiva If para asegurarse de
que el manejador solo se aplique si el archivo existe.
Esto permite que FallbackResource gestione las rutas que terminan en
.php pero que no existen, lo que puede resultar útil para el manejo de
errores y el enrutamiento.
mod_rewrite puede ser utilizado para permitir que cualquier archivo .php
sea mostrado como código fuente con coloración sintáctica, sin necesidad de renombrarlo o copiarlo con una extensión .phps:
El filtro de código fuente PHP no debería estar activo en sistemas de
producción, ya que puede exponer código confidencial o información
sensible contenida en el código fuente.
-
Utilice el procedimiento normal para iniciar el servidor Apache httpd, es decir:
O
Si se han seguido los pasos anteriores, ahora se tiene un servidor web
Apache httpd funcional con soporte PHP como módulo SAPI.
Por supuesto, hay una multitud de otras opciones de configuración disponibles
con Apache httpd y PHP. Para más información, introduzca el comando
./configure --help en el árbol de fuentes correspondiente.
Nota:
Compatibilidad MPM
A menos que PHP sea compilado con Zend Thread Safety
(--enable-zts), mod_php requiere
el MPM prefork.
Para más información, leer la entrada FAQ correspondiente sobre el uso de
Apache httpd con un MPM
multi-hilo.
La mayoría de los paquetes de distribución de
mod_php no se compilan con ZTS, por lo que
prefork suele ser necesario. Si se necesita un MPM
multi-hilo (recomendado para mejor rendimiento bajo carga), use
PHP-FPM con
mod_proxy_fcgi en su lugar.