Tutorial Laravel 13 #1: installare e configurare il progetto
verificato il 2 Settembre 2026 · 6 min
Installa Laravel 13 con composer create-project laravel/laravel blog, poi lancia php artisan serve. Il comando crea il file .env, genera la chiave dell'applicazione ed esegue le migrazioni da solo. Laravel 13 richiede PHP 8.3 come minimo e usa SQLite per impostazione predefinita.
Questo primo capitolo installa Laravel 13, spiega a che cosa serve ogni cartella del progetto e avvia il server di sviluppo. Alla fine, la pagina di benvenuto di Laravel comparirà nel tuo browser.
Che cosa ti serve
Laravel 13 richiede PHP 8.3 come minimo e accetta PHP 8.3, 8.4 e 8.5. Controlla la tua versione:
php -vConta solo la prima riga. Deve annunciare PHP 8.3, 8.4 o 8.5:
PHP 8.4.25 (cli) (built: Aug 27 2026 20:19:39) (NTS)Se il comando non esiste o restituisce una versione più vecchia, installa PHP. Su Windows, WampServer o Laragon, su macOS, Homebrew con brew install php, su Linux, il pacchetto php-cli della tua distribuzione.
Ti serve anche Composer, il gestore di dipendenze di PHP: è lui che scarica Laravel e tutto ciò da cui dipende.
composer --versionEstensioni PHP
Laravel ha bisogno di alcune estensioni PHP. Quasi tutte le installazioni le forniscono già. Due meritano un controllo, perché la loro assenza blocca il lavoro più avanti:
php -m | grep -E "pdo_sqlite|intl"pdo_sqlite serve per il database di questo tutorial. intl verrà richiesta al capitolo 4 dal pannello di amministrazione, installarla adesso evita un’installazione fallita in quel momento.
Un editor
VS Code è gratuito e basta e avanza, con l’estensione « PHP Intelephense ». PhpStorm è a pagamento e capisce Laravel in modo nativo. Il tutorial non presuppone nessuno dei due: si fa tutto da terminale.
Creare il progetto
Spostati nella cartella in cui tieni i tuoi progetti, poi:
composer create-project laravel/laravel blogComposer scarica Laravel e le sue dipendenze in una cartella blog. L’operazione richiede da uno a tre minuti, a seconda della connessione.
Da Laravel 11, create-project non si limita più a scaricare i file. Copia .env.example in .env, genera la chiave dell’applicazione, crea il file database/database.sqlite ed esegue le migrazioni iniziali. I comandi php artisan key:generate e php artisan migrate che trovi nei vecchi tutorial non servono più su un progetto nuovo.
Controlla la versione installata:
cd blog
php artisan --versionLaravel Framework 13.30.1L’alternativa: l’installer di Laravel
Esiste un installer globale che accorcia il comando e propone di scegliere uno starter kit:
composer global require laravel/installer
laravel new blogÈ comodo se crei progetti spesso, ma aggiunge una dipendenza globale alla macchina e ogni tanto crea un problema di PATH. Se ottieni laravel: command not found, l’articolo risolvere « laravel: command not found » spiega come rimediare. Per questo tutorial basta composer create-project, che evita il giro.
La struttura del progetto
Ecco che cosa contiene la cartella blog. Lo scheletro di Laravel si è molto alleggerito da Laravel 8: diversi file descritti dai vecchi tutorial non esistono più.
Nella radice
app
Il codice della tua applicazione. Appena installato contiene solo tre file: un controller di base, il modello User e un service provider. Qui aggiungerai i tuoi controller e i tuoi modelli.
bootstrap
Il file bootstrap/app.php è il punto di configurazione dell’applicazione: è lì che si dichiarano le rotte, i middleware e la gestione degli errori. In Laravel 8 e 9 questo ruolo era diviso tra app/Http/Kernel.php, app/Console/Kernel.php e app/Exceptions/Handler.php, che sono spariti.
config
I file di configurazione. Laravel 13 ne pubblica solo dieci per impostazione predefinita, contro la ventina di un tempo: gli altri esistono comunque nel framework con i loro valori predefiniti. Per recuperarne uno e modificarlo, usa php artisan config:publish.
database
Le migrazioni (la struttura delle tabelle), i seeder (i dati iniziali) e le factory (oggetti per i test). Qui si trova anche database.sqlite, il tuo database.
public
L’unica cartella che il server web deve esporre. Contiene index.php, il punto di ingresso di tutte le richieste, e i file compilati da Vite.
resources
Le viste Blade, i fogli di stile CSS e i file JavaScript prima della compilazione.
routes
Le dichiarazioni degli indirizzi. Laravel 13 crea solo due file, web.php e console.php. I file api.php e channels.php descritti nei tutorial scritti per Laravel 8 non vengono più creati d’ufficio: php artisan install:api e php artisan install:broadcasting li aggiungono se ti servono. Questo tutorial usa solo web.php.
Nella cartella app
Http/Controllers
I controller: il codice che riceve una richiesta, va a prendere i dati e sceglie la vista da restituire.
Models
I modelli Eloquent. Ogni tabella del database ha un modello corrispondente, che serve a leggerla e a scriverla. Questa cartella esiste da Laravel 8, nelle versioni precedenti i modelli stavano direttamente in app.
Configurare il progetto
Tutta la configurazione che dipende dalla macchina vive nel file .env, nella radice. I file di config lo leggono attraverso la funzione env(). Questo file non va mai messo sotto controllo di versione: contiene le tue password.
Il nome e l’indirizzo del sito
APP_NAME="Mon blog"
APP_URL=http://localhost:8000APP_NAME comparirà nel titolo delle pagine. APP_URL serve a costruire i link assoluti, in particolare quelli verso le immagini caricate.
Il database
Laravel 13 usa SQLite per impostazione predefinita:
DB_CONNECTION=sqliteSQLite tiene tutto il database in un solo file, database/database.sqlite. Non c’è nessun server da avviare, nessun utente da creare, nessuna password da ricordare. Per imparare è la scelta migliore: cancelli il file e riparti da zero.
Se preferisci MySQL o MariaDB, crea il database e sostituisci queste righe:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=Il tutorial funziona con entrambi. Una differenza di comportamento salta fuori al capitolo 8, quello sul motore di ricerca: lì viene misurata e spiegata.
Il link allo storage
I file caricati dal back-office finiscono in storage/app/public, che dal web non è raggiungibile. Questo comando crea il link simbolico che li rende visibili:
php artisan storage:linkINFO The [public/storage] link has been connected to [storage/app/public].Avviare il server
php artisan serve INFO Server running on [http://127.0.0.1:8000].
Press Ctrl+C to stop the serverApri http://127.0.0.1:8000. Compare la pagina di benvenuto di Laravel. Lascia aperto questo terminale: il server gira finché non lo fermi.
Se la porta 8000 è già occupata, Laravel non si ferma: prova la successiva e te lo dice. Leggi l’indirizzo mostrato invece di darlo per scontato.
Failed to listen on 127.0.0.1:8000 (reason: Address already in use)
INFO Server running on [http://127.0.0.1:8001].Puoi anche servire il progetto con Apache, Nginx, Docker o Laravel Herd. In quel caso la radice del server deve puntare alla cartella public, mai alla radice del progetto: esporre la radice renderebbe scaricabile il tuo file .env.
Verificare l’installazione
Questo comando riassume lo stato del progetto e conferma che è tutto a posto:
php artisan aboutEnvironment ........................................................
Application Name .......................................... Mon blog
Laravel Version ........................................... 13.30.1
PHP Version ................................................ 8.4.25
Composer Version ........................................... 2.10.3
Environment ................................................. local
Debug Mode ................................................ ENABLED
Drivers ...........................................................
Cache .................................................... database
Database ................................................... sqlite
Queue .................................................... database
Session .................................................. databaseIl progetto è pronto. L’indice della serie ricorda che cosa porta ogni capitolo. Il capitolo successivo spiega come associare un indirizzo al tuo codice.