Installare PHP e le sue estensioni per Laravel su Debian 13
verificato il 2 Settembre 2026 · 4 min
Debian 13 fornisce PHP 8.4 nei suoi repository ufficiali: sudo apt install php-cli php-fpm php-mbstring php-xml php-curl php-zip php-bcmath php-intl php-mysql basta per Laravel 13, senza repository di terze parti. Attenzione a due pacchetti spesso citati a torto: php-json non serve più da PHP 8.0, e serve php-mysql, non php-mysqli, perché Laravel passa da PDO.
Laravel 13 richiede almeno PHP 8.2 e una manciata di estensioni. La buona notizia: Debian 13 « trixie » fornisce PHP 8.4 nei suoi repository ufficiali, il che rende inutile il repository di terze parti Sury nel caso più comune.
Passaggi eseguiti su un container Debian 13 pulito, il 2 settembre 2026. Questo capitolo fa parte dell’installazione di Laravel su Debian, nel percorso Sviluppo web.
Verificare che cosa offre la tua Debian
Prima di aggiungere qualsiasi repository, guarda che cosa propone la distribuzione:
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 è disponibile. Per Laravel 13 è più che sufficiente, e ti evita un repository esterno da mantenere. La corrispondenza tra versione di Debian e versione di PHP fornita:
| Debian | PHP dei repository ufficiali | Basta per Laravel 13? |
|---|---|---|
| 13 « trixie » | 8.4 | Sì |
| 12 « bookworm » | 8.2 | Sì, il minimo richiesto |
| 11 « bullseye » | 7.4 | No, serve un repository di terze parti |
Installare PHP e le estensioni
Un solo comando copre la base richiesta da Laravel, più i driver di database:
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-certificatesDue estensioni comuni non compaiono in questo elenco perché dipendono dalle tue scelte di architettura: php-redis, trattata nel capitolo su Redis, e php-gd o php-imagick per l’elaborazione delle immagini.
Controlla la versione ottenuta:
php -vPHP 8.4.24 (cli) (built: Jul 31 2026 05:11:11) (NTS)Poi verifica che tutte le estensioni attese da Laravel rispondano presente:
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)"
doneSull’installazione di prova le sedici righe restituiscono OK. Diverse di queste estensioni sono compilate nel binario PHP di Debian e non hanno un pacchetto dedicato: compaiono comunque in php -m.
Due pacchetti spesso citati a torto
Da PHP 8.0 l’estensione JSON è compilata nel binario e non può più essere disattivata. Il pacchetto php-json sopravvive in Debian come semplice pacchetto di transizione. Installarlo non rompe niente, ma non porta niente.
Laravel passa da PDO, non da mysqli. Serve php-mysql, che li fornisce entrambi. Verifica che cosa vede davvero PHP:
php -r 'echo implode(", ", PDO::getAvailableDrivers()), PHP_EOL;'mysql, sqliteSe mysql non compare in questo elenco, Laravel non riuscirà a connettersi a MySQL o MariaDB, qualunque siano le impostazioni del file .env.
Regolare PHP per un’applicazione web
Coesistono due file, con valori diversi: quello della riga di comando e quello del server web. Modificare quello sbagliato è una confusione classica.
/etc/php/8.4/cli/php.ini # artisan, composer, attività pianificate
/etc/php/8.4/fpm/php.ini # richieste servite da nginx o ApacheLe impostazioni che contano per un’applicazione Laravel stanno nel file FPM:
memory_limit = 256M
upload_max_filesize = 20M
post_max_size = 21M
max_execution_time = 60post_max_size deve restare superiore a upload_max_filesize, altrimenti un invio alla dimensione massima viene rifiutato prima di arrivare all’applicazione. Ricarica poi il servizio, altrimenti i valori restano invariati:
sudo systemctl reload php8.4-fpm
php -i | grep memory_limit # valore CLI
sudo -u www-data php-fpm8.4 -i | grep memory_limitPHP è a posto, il passaggio successivo è l’installazione di Composer.
Installare un’altra versione di PHP con il repository Sury
Questa deviazione si giustifica solo se punti a una versione che Debian non fornisce: PHP 8.5 su Debian 13, o PHP 8.2 su una Debian 11. Il metodo è cambiato: apt-key è stato rimosso da Debian 12, bisogna passare da un portachiavi dedicato.
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 più versioni installate, scegli quella che risponde al comando php:
sudo update-alternatives --config phpAndrà mantenuto: a ogni salto di versione di Debian bisogna verificare che il repository segua, e sorvegliare a parte i suoi aggiornamenti di sicurezza. Se i repository ufficiali bastano, resta su quelli.
Errori frequenti
systemctl reload php8.4-fpm.