Instalar PHP y sus extensiones para Laravel en Debian 13
verificado el 2 septiembre 2026 · 4 min
Debian 13 ofrece PHP 8.4 en sus repositorios oficiales: sudo apt install php-cli php-fpm php-mbstring php-xml php-curl php-zip php-bcmath php-intl php-mysql basta para Laravel 13, sin repositorio externo. Ojo con dos paquetes que se recomiendan por error: php-json ya no sirve para nada desde PHP 8.0, y el que hace falta es php-mysql, no php-mysqli, porque Laravel pasa por PDO.
Laravel 13 exige PHP 8.2 como mínimo y un puñado de extensiones. Buena noticia: Debian 13 «trixie» trae PHP 8.4 en sus repositorios oficiales, lo que deja sin sentido el repositorio externo Sury en el caso habitual.
Pasos ejecutados en un contenedor Debian 13 limpio, el 2 de septiembre de 2026. Este capítulo forma parte de la instalación de Laravel en Debian, dentro del itinerario Desarrollo web.
Comprobar qué ofrece tu Debian
Antes de añadir ningún repositorio, mira lo que trae la distribución:
sudo apt update
apt-cache policy php-cliphp-cli:
Installed: (none)
Candidate: 2:8.4+96
Version table:
2:8.4+96 500
500 http://deb.debian.org/debian trixie/main arm64 PackagesPHP 8.4 está disponible. Es de sobra suficiente para Laravel 13 y te ahorra mantener un repositorio externo. Qué versión de PHP trae cada versión de Debian:
| Debian | PHP de los repositorios oficiales | ¿Suficiente para Laravel 13? |
|---|---|---|
| 13 «trixie» | 8.4 | Sí |
| 12 «bookworm» | 8.2 | Sí, en el mínimo exigido |
| 11 «bullseye» | 7.4 | No, hace falta un repositorio externo |
Instalar PHP y las extensiones
Un solo comando cubre la base que exige Laravel, más los drivers de base de datos:
sudo apt install -y php-cli php-fpm \
php-mbstring php-xml php-curl php-zip \
php-bcmath php-intl \
php-mysql php-sqlite3 \
unzip curl ca-certificatesDos extensiones habituales no están en esa lista porque dependen de tus decisiones de arquitectura: php-redis, tratada en el capítulo sobre Redis, y php-gd o php-imagick para el tratamiento de imágenes.
Comprueba la versión obtenida:
php -vPHP 8.4.24 (cli) (built: Jul 31 2026 05:11:11) (NTS)Verifica después que todas las extensiones que Laravel espera están presentes:
for e in ctype curl dom fileinfo filter hash mbstring openssl \
pcre pdo session tokenizer xml bcmath intl zip; do
printf "%-10s %s\n" "$e" "$(php -m | grep -qix "$e" && echo OK || echo MANQUANT)"
doneEn la instalación de prueba, las dieciséis líneas devuelven OK. Varias de esas extensiones vienen compiladas en el binario de PHP de Debian y no tienen paquete propio: aun así aparecen en php -m.
Dos paquetes que se recomiendan por error
Desde PHP 8.0, la extensión JSON viene compilada en el binario y ya no se puede desactivar. El paquete php-json sigue en Debian como simple paquete de transición. Instalarlo no rompe nada, pero tampoco aporta nada.
Laravel pasa por PDO, no por mysqli. El que hace falta es php-mysql, y trae los dos. Comprueba lo que ve PHP de verdad:
php -r 'echo implode(", ", PDO::getAvailableDrivers()), PHP_EOL;'mysql, sqliteSi mysql no aparece en esa lista, Laravel no podrá conectarse a MySQL ni a MariaDB, sea cual sea la configuración del archivo .env.
Ajustar PHP para una aplicación web
Conviven dos archivos, con valores distintos: el de la línea de comandos y el del servidor web. Modificar el equivocado es una fuente clásica de confusión.
/etc/php/8.4/cli/php.ini # artisan, composer, tareas programadas
/etc/php/8.4/fpm/php.ini # peticiones servidas por nginx o ApacheLos ajustes que cuentan para una aplicación Laravel están en el archivo de FPM:
memory_limit = 256M
upload_max_filesize = 20M
post_max_size = 21M
max_execution_time = 60post_max_size debe mantenerse por encima de upload_max_filesize, si no, un envío al tamaño máximo se rechaza antes de llegar a la aplicación. Recarga después el servicio, o los valores seguirán como estaban:
sudo systemctl reload php8.4-fpm
php -i | grep memory_limit # valor de la CLI
sudo -u www-data php-fpm8.4 -i | grep memory_limitCon PHP ya en su sitio, el paso siguiente es la instalación de Composer.
Instalar otra versión de PHP con el repositorio Sury
Este rodeo solo se justifica si buscas una versión que Debian no ofrece: PHP 8.5 en Debian 13, o PHP 8.2 en una Debian 11. El método ha cambiado: apt-key ya no existe desde Debian 12, hay que pasar por un llavero dedicado.
sudo apt install -y curl ca-certificates
sudo curl -fsSLo /etc/apt/keyrings/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/etc/apt/keyrings/php.gpg] https://packages.sury.org/php/ $(. /etc/os-release && echo $VERSION_CODENAME) main" \
| sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
sudo apt install -y php8.5-cli php8.5-fpm php8.5-mbstring php8.5-xml php8.5-curl php8.5-zip php8.5-bcmath php8.5-intl php8.5-mysqlCon varias versiones instaladas, elige la que responde al comando php:
sudo update-alternatives --config phpHabrá que mantenerlo: en cada subida de versión de Debian, comprobar que el repositorio la sigue, y vigilar sus actualizaciones de seguridad por separado. Si los repositorios oficiales bastan, quédate con ellos.
Errores frecuentes
systemctl reload php8.4-fpm.