Indice dei Contenuti
Laravel è uno dei framework PHP più popolari per lo sviluppo web, ma come ogni strumento complesso può presentare errori che, se non adeguatamente compresi, rischiano di rallentare significativamente lo sviluppo.
Questo articolo raccoglie le soluzioni ai problemi più comuni che gli sviluppatori incontrano durante lo sviluppo con Laravel, dalle questioni di configurazione base come chiavi di crittografia e permessi, fino a errori più complessi legati al routing e alla gestione delle variabili.
Per ogni errore, forniamo il messaggio completo, una spiegazione chiara del problema e i passaggi dettagliati per risolverlo, permettendovi di superare rapidamente questi ostacoli tecnici.
1. No application encryption key has been specified
Errore completo:
No application encryption key has been specified. Your application will not be able to safely store encrypted values
Soluzione:
- Esegui il comando
php artisan key:generate
- Verifica che nel file
.env
sia presente la chiaveAPP_KEY
- Se il problema persiste, cancella la cache
php artisan config:clear
2. The only supported ciphers are AES-128-CBC and AES-256-CBC
Errore completo:
The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths
Soluzione:
- Verifica la lunghezza della chiave in
.env
- Rigenera la chiave
php artisan key:generate --force
3. SQLSTATE[HY000] [2002] Connection refused
Errore completo:
SQLSTATE[HY000] [2002] Connection refused
Soluzione:
- Verifica le credenziali nel file
.env
:
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
- Controlla che MySQL sia in esecuzione
- Prova a usare
localhost
invece di127.0.0.1
4. Class XYZ not found durante la migrazione
Errore completo:
Class XYZ not found during migration
Soluzione:
- Composer dump-autoload
composer dump-autoload
- Cancella la cache:
php artisan clear-compiled
php artisan cache:clear
5. The bootstrap/cache directory must be present and writable
Errore completo:
The bootstrap/cache directory must be present and writable
Soluzione:
- Crea la directory se non esiste
mkdir bootstrap/cache
- Imposta i permessi
chmod -R 775 bootstrap/cache
6. Unable to create the storage/logs directory
Errore completo:
Unable to create the storage/logs directory "permission denied"
Soluzione:
- Imposta i permessi corretti:
chmod -R 775 storage
chown -R www-data:www-data storage
7. Route [XYZ] not defined
Errore completo:
Route [XYZ] not defined.
Soluzione:
- Verifica di aver incluso il nome della rotta corretta in
routes/web.php
Route::get('/rotta-', function(){
return view('welcome');
})->name('XYZ');
8. View [xyz] not foun
Errore completo:
View [xyz] not found
Soluzione:
- Verifica il percorso della view
resources/views/xyz.blade.php
- Controlla la sintassi nel controller:
return view('xyz'); // per xyz.blade.php
return view('folder.xyz'); // per folder/xyz.blade.php
9. Missing required parameter
Errore completo:
Missing required parameter for [Route: xyz] [URI: user/{id}]
Soluzione:
- Verifica di passare tutti i parametri richiesti nella rotta
- Controlla la sintassi nel controller:
// Controller
public function show($id) {
// ...
}
// View/Blade
route('user.show', ['id' => $userId])
10. MethodNotAllowed
Errore completo:
MethodNotAllowedHttpException in RouteCollection.php
Soluzione:
- Verifica che il metodo HTTP (GET, POST, etc.) corrisponda alla definizione della rotta
- Aggiungi il metodo corretto nel file routes:
Route::post('/form', 'Controller@method'); // invece di Route::get()
- Per form, verifica di aver incluso @method se necessario:
@method('PUT')
@method('DELETE')
11. HttpExceptionNotFoundHttpException
Errore completo:
NotFoundHttpException in RouteCollection.php
Soluzione:
- Verifica che la rotta esista in
routes/web.php
oroutes/api.php
- Controlla eventuali middleware che potrebbero bloccare l’accesso
- Esegui
php artisan route:list
per vedere tutte le rotte disponibili
12. 419 Error / Page Expired
Errore completo:
419 Page Expired
Soluzione:
- Aggiungi il token CSRF nel form:
@csrf
Se non sei riuscito a risolvere con questo suggerimento, puoi consultare la guida dettagliata al problema.
13. File Permission for storage
Errore completo:
The stream or file "storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
Soluzione:
- Imposta i permessi corretti:
chmod -R 775 storage bootstrap/cache
chown -R $USER:www-data storage bootstrap/cache
14. ReflectionException / Class does not exist
Errore completo:
ReflectionException: Class App\\Http\\Controllers\\XYZController does not exist
Soluzione:
- Esegui
composer dump-autoload
- Verifica il namespace del controller
- Controlla che il nome della classe corrisponda al nome del file
15. 500 Error
Errore completo:
500 Internal Server Error
Soluzione:
- Controlla i log in
storage/logs/laravel.log
- Abilita il debug in
.env
:
APP_DEBUG=true
- Verifica permessi file e cartelle
- Controlla la connessione al database
16. Undefined variable
Errore completo:
Undefined variable: $nome_variabile
Soluzione:
return view('view', ['nome_variabile' => $value]);
17. Undefined index
Errore completo:
Undefined index: keyName
Soluzione:
- Usa l’helper
isset()
oarray_key_exists()
- Utilizza l’operatore null coalescing:
$value = $array['key'] ?? 'default';
18. Class Not Found
Errore completo:
Class 'App\\Models\\User' not found
Soluzione:
- Verifica il namespace della classe
- Controlla l’import nella parte superiore del file
- Esegui
composer dump-autoload
19. Target class controller does not exist
Errore completo:
Target class [Controller] does not exist.
Soluzione:
- Verifica il namespace del controller
- Controlla la sintassi nel file routes:
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);