Installare Composer su Debian 13 con verifica della firma
verificato il 2 Settembre 2026 · 3 min
Scarica il programma di installazione, confronta la sua impronta SHA-384 con quella pubblicata su composer.github.io/installer.sig, ed eseguilo solo se le due coincidono. Installalo in /usr/local/bin/composer per renderlo disponibile a tutti gli utenti. Da lì in poi non usare mai sudo composer install: lancia Composer con l'account proprietario del progetto.
Composer installa Laravel e tutte le sue dipendenze. Su Debian la questione non è solo installarlo, ma farlo senza eseguire uno script scaricato senza controlli: la procedura ufficiale verifica l’impronta del programma di installazione prima di lanciarlo.
Passaggi eseguiti su Debian 13 « trixie » il 2 settembre 2026, con PHP 8.4.24. Questo capitolo fa parte dell’installazione di Laravel su Debian, nel percorso Sviluppo web.
Prerequisiti
Composer è un programma PHP: prima di lui serve PHP da riga di comando.
php -v
sudo apt install -y php-cli unzip curl ca-certificatesunzip non è decorativo: senza di lui Composer decomprime gli archivi in PHP, molto più lentamente.
Installare Composer con verifica della firma
Quattro comandi, in quest’ordine. Il terzo è quello che conta: confronta l’impronta del file scaricato con quella pubblicata dal progetto.
# 1. l'impronta di riferimento, pubblicata dal progetto Composer
EXPECTED="$(curl -sS https://composer.github.io/installer.sig)"
# 2. il programma di installazione
curl -sS https://getcomposer.org/installer -o composer-setup.php
# 3. l'impronta del file ricevuto
ACTUAL="$(php -r 'echo hash_file("sha384", "composer-setup.php");')"
# 4. non si lancia niente se le due differiscono
if [ "$EXPECTED" = "$ACTUAL" ]; then
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
else
>&2 echo "Signature invalide : téléchargement corrompu ou altéré."
rm composer-setup.php
exit 1
fiSull’installazione di prova le due impronte coincidono:
attendue : c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47
obtenue : c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47
→ signature valideSenza, esegui con i diritti sudo uno script PHP scaricato dalla rete, senza nessuna garanzia sul suo contenuto. È il motivo per cui la documentazione ufficiale pubblica un’impronta di riferimento. I tutorial che concatenano curl e poi php composer-setup.php senza confronto saltano l’unica protezione disponibile.
Verifica il risultato:
composer --versionComposer version 2.10.3 2026-08-27 13:34:23
PHP version 8.4.24 (/usr/bin/php8.4)Metterlo in /usr/local/bin con il nome composer rende il comando disponibile per tutti gli utenti del server, senza toccare il PATH.
E il pacchetto Debian?
Debian propone un pacchetto composer. Funziona, ma segue il ritmo della distribuzione: la versione dei repository è quasi sempre indietro rispetto a quella corrente. Dato che Composer si aggiorna da solo con un comando, l’installazione manuale resta preferibile su un server applicativo.
sudo composer self-update # ultima versione stabile
sudo composer self-update --rollback # tornare alla precedenteNon lanciare Composer da root
Installare il binario con sudo è normale. Usarlo con sudo non lo è.
# da evitare
sudo composer install
# corretto: l'utente proprietario del progetto
su - deploy
cd /var/www/mon-projet
composer install --no-dev --optimize-autoloaderSu una macchina macOS il problema si presenta in modo diverso e si traduce spesso in un comando laravel non trovato.
Due ragioni. Gli script post-install delle dipendenze girano con i diritti che gli concedi, il che fa di sudo composer install un’esecuzione di codice di terzi da root. E i file creati appartengono allora a root, il che provoca errori di scrittura appena il server web prova a scrivere in storage/.
Del resto Composer avvisa da solo quando viene lanciato da root senza COMPOSER_ALLOW_SUPERUSER.
Opzioni utili in produzione
composer install --no-dev --optimize-autoloader --no-interaction| Opzione | Effetto |
|---|---|
--no-dev | ignora le dipendenze di sviluppo (test, strumenti di debug) |
--optimize-autoloader | genera una tabella di classi statica, più rapida da caricare |
--no-interaction | nessuna domanda posta, indispensabile in deploy automatizzato |
Porta sempre il file composer.lock insieme al progetto, e lancia composer install e non composer update: il primo comando installa esattamente le versioni del lock, il secondo le ricalcola e può introdurre modifiche non testate in piena messa in produzione.
Errori frequenti
composer install a partire dal composer.lock.