Si estás desarrollando aplicaciones web con PHP, seguramente te habrás encontrado con distintos métodos para ejecutar el código: mod_php, PHP-FPM, y cómo Apache los maneja. Vamos a desglosarlo.
1. PHP tradicional con Apache (mod_php)
- Qué es:
mod_phpes un módulo de Apache que permite ejecutar código PHP directamente dentro del proceso del servidor web. - Cómo funciona: Apache carga el intérprete de PHP como parte de sus procesos. Cada petición HTTP que requiere PHP es procesada dentro del mismo proceso de Apache.
- Ventajas:
- Simplicidad: fácil de configurar.
- Integración directa: PHP puede acceder a variables de Apache y módulos internos.
- Desventajas:
- Cada proceso de Apache carga PHP completo, lo que aumenta el consumo de memoria.
- No es tan eficiente en entornos con muchas conexiones concurrentes.

2. PHP-FPM (FastCGI Process Manager)
Requiere monitoreo de los pools de procesos para evitar saturación.
Qué es: PHP-FPM es un gestor de procesos FastCGI para PHP. Funciona como un servicio independiente que Apache llama para ejecutar scripts PHP.
Cómo funciona:
Apache recibe la petición HTTP.
Si es un archivo PHP, Apache lo redirige a PHP-FPM mediante FastCGI (usualmente usando mod_proxy_fcgi). En versiones de Linux Alpine se encuentra incluido en el mod_proxy.
PHP-FPM procesa el script y devuelve la respuesta a Apache.
Ventajas:
Manejo eficiente de procesos: PHP-FPM mantiene pools de procesos listos para servir solicitudes.
Mejor rendimiento en sitios con alta concurrencia.
Permite ejecutar diferentes versiones de PHP para distintos sitios.
Mejor aislamiento de procesos y control de recursos.
Desventajas:
Configuración más compleja.

3. Cómo Apache gestiona PHP con FPM
Apache ya no ejecuta PHP directamente. Usa mod_proxy_fcgi o mod_fastcgi para comunicarse con PHP-FPM:
<FilesMatch .php$>
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost/"
</FilesMatch>SetHandlerindica que las peticiones PHP se deben enviar a PHP-FPM.- PHP-FPM escucha en un socket Unix o puerto TCP y devuelve la salida ya procesada.
- Apache sigue manejando la conexión HTTP, logging, seguridad y otras funcionalidades, pero la ejecución de PHP queda delegada.
4. Resumen de diferencias
| Característica | mod_php (tradicional) | PHP-FPM (FastCGI) |
|---|---|---|
| Ejecución | Dentro de Apache | Servicio externo |
| Rendimiento | Bueno en bajo tráfico | Mejor en alto tráfico |
| Memoria | Alta | Optimizada |
| Multiples versiones | Difícil | Fácil |
| Aislamiento | Bajo | Alto |
5. Conclusión
- mod_php es más simple y suficiente para sitios pequeños o entornos de desarrollo.
- PHP-FPM es más eficiente, flexible y escalable, ideal para producción y sitios con alta carga.
- Apache gestiona la parte HTTP y delega la ejecución de PHP a PHP-FPM, optimizando recursos y manteniendo la seguridad y control.
5. Exclusividad de PHP-FPM y orden de ejecución con Apache
Cuando usamos PHP-FPM, Apache ya no ejecuta PHP directamente. Esto implica dos cosas importantes:
| Nombre en paquete | Qué incluye |
|---|---|
| php-apache | PHP + mod_php |
| php-fpm | PHP + FPM |
1️⃣ Exclusividad de PHP-FPM
- Solo puede haber un intérprete activo por socket o puerto.
- PHP-FPM actúa como un servicio independiente, gestionando un pool de procesos que reciben solicitudes de PHP de Apache (o Nginx).
- Si tienes múltiples instancias de PHP-FPM escuchando en el mismo socket, habrá conflictos.
- Por eso se habla de “exclusividad”: cada pool de PHP-FPM se asigna a un sitio o versión de PHP y Apache lo llama a través del socket/puerto definido.
6. Ejecución del servidor
1️⃣ Arranque con mod_php (php-apache) en Alpine
En Alpine, normalmente instalas el paquete php-apache2:
# Instalar Apache + mod_php
apk add apache2 php8-apache2
# Iniciar Apache (que ya carga PHP internamente)
httpd -D- Nota: No hay servicio PHP externo, todo corre dentro de Apache.
2️⃣ Arranque con PHP-FPM + Apache en Alpine
Instalas PHP-FPM y Apache, y configuras Apache para usar FastCGI:
# Instalar PHP-FPM y Apache
apk add php8-fpm php8-opcache apache2
# Hablitar modulo proxy o proxy_fcgi segun se necesite
...
# Agregar configuracion proxy a FCGI
...
# Iniciar FPM
php-fpm8
# Iniciar Apache
httpd -D

Leave a Reply
You must be logged in to post a comment.