
Installa prima l'installer con composer global require laravel/installer, poi chiedi a Composer dove mette i suoi eseguibili: composer global config bin-dir --absolute. Aggiungi quel percorso al tuo PATH in ~/.zshrc, poi lancia source ~/.zshrc. Su macOS con bash il file è ~/.bash_profile, mai ~/.bashrc.
Digiti laravel new mio-progetto e il terminale risponde:
zsh: command not found: laravelIl problema non è quasi mai Laravel. È che l’eseguibile installato da Composer si trova in una cartella che la tua shell non consulta. Devi quindi trovare quella cartella e aggiungerla al PATH.
Articolo del percorso Sviluppo web. Procedura verificata il 2 settembre 2026 su macOS 26.5.1 con Composer 2.9.5 e zsh.
Prima di tutto: l’installer è installato?
Il comando laravel non arriva insieme a Composer, si installa a parte:
composer global require laravel/installerSe non l’hai mai lanciato, nessuna configurazione del PATH farà comparire il comando. Nota che puoi tranquillamente farne a meno: composer create-project laravel/laravel mio-progetto fa la stessa cosa senza installer globale.
Trovare la cartella giusta, senza tirare a indovinare
La maggior parte dei tutorial ti fa copiare $HOME/.composer/vendor/bin. Spesso è corretto, ma non sempre: Composer sceglie la propria cartella personale in base al sistema e alle variabili d’ambiente presenti. Invece di scommettere, chiediglielo:
composer global config bin-dir --absolute/Users/gekkode/.composer/vendor/binQuesto è il risultato ottenuto su macOS 26.5.1. Su un’installazione configurata per seguire le convenzioni XDG, il comando può restituire ~/.config/composer/vendor/bin. Usa sempre quello che il comando mostra sulla tua macchina, non quello che dice un tutorial.
Finché non è installato nessun pacchetto globale, il percorso è corretto ma la cartella è assente. Non ha alcuna conseguenza: aggiungere al PATH una cartella inesistente non provoca errori, e verrà creata al primo composer global require.
Aggiungere la cartella al PATH con zsh
zsh è la shell predefinita di macOS da Catalina. Il file da modificare è ~/.zshrc:
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcSostituisci il percorso con quello restituito dal comando precedente. Il source applica la modifica alla sessione in corso, senza, avrà effetto solo in un nuovo terminale.
Verifica:
which laravel
laravel --versionE se usi bash
Su macOS Mojave e precedenti, o se hai deliberatamente mantenuto bash, il file è ~/.bash_profile:
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profileÈ l’errore classico, e compariva nella versione precedente di questo articolo. Su macOS il Terminale apre una login shell, che legge ~/.bash_profile e non ~/.bashrc. Una riga aggiunta in ~/.bashrc non verrà mai applicata, il che dà l’impressione che la procedura non funzioni.
Per sapere quale shell stai usando:
echo $SHELL
# /bin/zsh → ~/.zshrc
# /bin/bash → ~/.bash_profileSe il comando resta introvabile
Tre verifiche, in ordine. Prima di tutto, il PATH contiene davvero la cartella:
echo $PATH | tr ':' '\n' | grep composerPoi, l’eseguibile è presente:
ls "$(composer global config bin-dir --absolute)"Se è assente, l’installazione globale è fallita. Rilanciala e leggi l’output: un conflitto di versione di PHP è la causa più frequente.
Infine, se è Composer stesso a essere introvabile, è lo stesso problema un gradino più in basso. Su macOS l’installazione più semplice passa da Homebrew:
brew install composerSu un server la questione non si pone negli stessi termini: vedi l’installazione di Composer su Debian.
L’alternativa che elimina il problema
Laravel Herd installa PHP, Composer e l’installer di Laravel in un ambiente gestito, e si occupa da solo del PATH. Per una postazione di sviluppo macOS montata da zero è la strada più breve: non c’è più nessun file di configurazione della shell da toccare.
Se lavori già con un’installazione Homebrew che conosci bene, la manipolazione del PATH descritta sopra resta perfettamente valida.
Errori frequenti
~/.bash_profile. Una riga aggiunta in ~/.bashrc non viene mai applicata.composer global config bin-dir --absolute dà il percorso giusto sulla tua macchina.source sul file modificato.

