Cómo instalar PHP 8.4 en Caddy usando PHP-FPM
![]()
Cuando usamos PHP en servidores tradicionales como Apache, muchas guías hablan de “PHP normal” o mod_php. Esto significa que PHP se ejecuta dentro del mismo proceso del servidor web, lo que funciona bien para Apache porque tiene soporte nativo para mod_php.
Sin embargo, Caddy no tiene soporte para ejecutar PHP directamente, y tampoco Nginx. Esto se debe a que estos servidores funcionan de forma distinta: manejan las peticiones web pero no procesan scripts PHP dentro de su propio proceso. Por eso, Caddy siempre necesita PHP-FPM (FastCGI Process Manager) para ejecutar PHP.
Qué es PHP-FPM y por qué usarlo
PHP-FPM (FastCGI Process Manager) es una versión de PHP diseñada para ejecutarse como un proceso independiente que escucha peticiones FastCGI desde el servidor web. Esto ofrece varias ventajas:
- PHP corre separado del servidor web → más seguridad y estabilidad.
- Mejor manejo de múltiples peticiones simultáneas → más rendimiento.
- Permite configurar pools de procesos distintos por sitio o dominio.
- Compatible con servidores como Caddy y Nginx, que solo saben “enviar la petición a un proceso externo”.
En resumen: si quieres usar PHP con Caddy, no hay otra opción que PHP-FPM.
Instalar PHP 8.4-FPM y extensiones comunes
En Debian o Ubuntu, puedes instalar PHP 8.4-FPM con las extensiones más utilizadas así:
sudo apt update
sudo apt install php8.4-fpm php8.4-cli php8.4-mysql php8.4-curl php8.4-mbstring php8.4-xml -yphp8.4-fpm→ El servicio PHP independiente para Caddy.php8.4-cli→ Permite ejecutar PHP desde la terminal.php8.4-mysql→ Conexión a bases de datos MySQL o MariaDB.php8.4-curl→ Realizar peticiones HTTP desde PHP.php8.4-mbstring→ Manejo de cadenas multibyte (UTF-8).php8.4-xml→ Procesamiento de XML.
Verifica que PHP-FPM esté activo:
sudo systemctl status php8.4-fpmEl servicio normalmente crea un socket Unix en:
/run/php/php8.4-fpm.socko escucha en el puerto TCP 127.0.0.1:9000.
Configurar Caddy para usar PHP-FPM
Caddy necesita que le indiquemos dónde está PHP-FPM. Esto se hace en el archivo Caddyfile:
Usando socket Unix (recomendado)
example.com {
root * /var/www/html
php_fastcgi unix//run/php/php8.4-fpm.sock
file_server
}Usando TCP (opcional)
example.com {
root * /var/www/html
php_fastcgi 127.0.0.1:9000
file_server
}root * /var/www/html→ Carpeta raíz de la web.php_fastcgi→ Indica a Caddy que envíe las peticiones PHP a PHP-FPM.file_server→ Sirve archivos estáticos (HTML, CSS, JS).
Recarga Caddy para aplicar cambios:
sudo systemctl reload caddyResumen
- PHP “normal” (
mod_php) corre dentro del servidor web → no sirve para Caddy. - PHP-FPM corre separado como proceso independiente → Caddy solo envía las peticiones PHP a él.
- Instalamos PHP 8.4-FPM con extensiones comunes para que la web funcione correctamente.
- Configuramos Caddy para usar
php_fastcgiapuntando al socket o puerto de PHP-FPM.
Con esto, tu servidor Caddy estará listo para servir PHP 8.4 de forma eficiente.
