Laravel Error Lengkap: 50 Error yang Paling Sering Terjadi Beserta Penyebab, Solusi, dan Cara Mencegahnya

Laravel adalah salah satu framework PHP paling populer karena memiliki struktur rapi, dokumentasi lengkap, ekosistem besar, dan fitur modern seperti routing, middleware, ORM Eloquent, queue, scheduler, cache, event, notification, hingga API authentication. Namun, dalam proses development maupun deployment, developer sering bertemu berbagai error yang cukup membingungkan.

Sebagian error Laravel terlihat sederhana, misalnya halaman tidak ditemukan atau token CSRF tidak valid. Namun, sebagian lainnya bisa membuat aplikasi gagal berjalan total, seperti masalah

APP_KEY

, konfigurasi

.env

, permission folder

storage

, cache konfigurasi, autoload Composer, koneksi database, queue worker, Redis, hingga error saat deploy ke VPS atau shared hosting.

Artikel ini membahas 50 error Laravel yang paling sering terjadi, lengkap dengan penyebab, solusi, dan cara mencegahnya. Pembahasan dibuat praktis agar bisa langsung digunakan sebagai panduan troubleshooting ketika aplikasi Laravel bermasalah.

1. 500 Internal Server Error

500 Internal Server Error adalah error umum yang menandakan server gagal memproses request. Di Laravel, error ini bisa disebabkan oleh banyak hal.

Penyebab

Beberapa penyebab umum:

File

.env

salah konfigurasi.

APP_KEY

belum dibuat.

Permission folder

storage

atau

bootstrap/cache

bermasalah.

Error pada kode PHP.

Dependency Composer belum lengkap.

Cache config masih menyimpan konfigurasi lama.

Server tidak memenuhi versi PHP atau ekstensi yang dibutuhkan.

Solusi

Aktifkan debug sementara di file

.env

:

APP_DEBUG=true

APP_ENV=local

Kemudian cek log Laravel:

tail -f storage/logs/laravel.log

Jalankan beberapa perintah berikut:

composer install

php artisan key:generate

php artisan config:clear

php artisan cache:clear

php artisan route:clear

php artisan view:clear

Pastikan permission folder benar:

chmod -R 775 storage bootstrap/cache

Cara Mencegah

Jangan deploy tanpa mengecek log.

Gunakan

.env

production yang benar.

Jalankan

composer install –no-dev –optimize-autoloader

saat deployment.

Pastikan permission folder sudah disiapkan.

Jangan mengaktifkan

APP_DEBUG=true

di production.

2. 404 Not Found

Error 404 Not Found muncul ketika route, controller, atau halaman yang diminta tidak ditemukan.

Penyebab

Route belum dibuat.

URL salah.

Route cache masih menyimpan route lama.

File

.htaccess

bermasalah.

Web server tidak diarahkan ke folder

public

.

Parameter route tidak sesuai.

Solusi

Cek daftar route:

php artisan route:list

Bersihkan cache route:

php artisan route:clear

Pastikan document root server mengarah ke folder:

/public

Jika memakai Apache, pastikan

mod_rewrite

aktif dan file

.htaccess

tersedia di folder

public

.

Cara Mencegah

Selalu cek

php artisan route:list

setelah menambah route.

Jangan mengarahkan domain ke root project Laravel.

Gunakan nama route agar URL lebih aman saat berubah.

3. 419 Page Expired

Error 419 Page Expired biasanya terjadi pada form Laravel yang menggunakan proteksi CSRF.

Penyebab

Token CSRF tidak dikirim.

Session expired.

Form tidak memakai directive

@csrf

.

Cookie/session tidak tersimpan.

Domain atau konfigurasi session salah.

Request AJAX tidak menyertakan token CSRF.

Solusi

Tambahkan

@csrf

pada form:

<form method=”POST” action=”/login”>

    @csrf

</form>

Untuk AJAX, sertakan token:

<meta name=”csrf-token” content=” csrf_token() “>

axios.defaults.headers.common[‘X-CSRF-TOKEN’] =

    document.querySelector(‘meta[name=”csrf-token”]’).getAttribute(‘content’);

Bersihkan cache:

php artisan config:clear

php artisan cache:clear

Cara Mencegah

Selalu gunakan

@csrf

pada form POST, PUT, PATCH, dan DELETE.

Pastikan session driver berjalan.

Jangan menghapus middleware

VerifyCsrfToken

tanpa alasan kuat.

4. CSRF Token Mismatch

Error CSRF token mismatch mirip dengan 419, tetapi biasanya muncul lebih eksplisit di log Laravel.

Penyebab

Token di form berbeda dengan token session.

Session tidak tersimpan.

Cache browser memakai halaman lama.

Domain cookie tidak sesuai.

Aplikasi berjalan di balik proxy tanpa konfigurasi benar.

Solusi

Pastikan form menggunakan:

@csrf

Cek konfigurasi session di

.env

:

SESSION_DRIVER=file

SESSION_DOMAIN=null

Jika memakai subdomain, sesuaikan:

SESSION_DOMAIN=.domainanda.com

Cara Mencegah

Hindari cache HTML form yang berisi token lama.

Atur session domain sesuai struktur domain.

Gunakan HTTPS secara konsisten.

5. APP_KEY Missing

Laravel membutuhkan

APP_KEY

untuk enkripsi session, cookie, password reset token, dan data terenkripsi lainnya.

Penyebab

File

.env

belum dibuat.

APP_KEY

kosong.

Belum menjalankan

php artisan key:generate

.

File

.env

tidak terbaca di server.

Solusi

Salin file contoh:

cp .env.example .env

Generate key:

php artisan key:generate

Pastikan hasilnya muncul:

APP_KEY=base64:xxxxxxxxxxxxxxxx

Cara Mencegah

Selalu generate

APP_KEY

setelah setup project.

Jangan mengganti

APP_KEY

sembarangan di production karena data terenkripsi lama bisa tidak terbaca.

Pastikan

.env

tidak ikut terhapus saat deployment.

6. Permission Storage Error

Laravel perlu menulis file ke folder

storage

dan

bootstrap/cache

.

Penyebab

Folder tidak writable.

Owner folder berbeda dengan user web server.

Permission terlalu ketat.

Deploy menggunakan user berbeda dari web server.

Solusi

Set permission:

chmod -R 775 storage bootstrap/cache

Jika memakai Linux server, sesuaikan owner:

chown -R www-data:www-data storage bootstrap/cache

Atau jika deploy memakai user tertentu:

chown -R deploy:www-data storage bootstrap/cache

Cara Mencegah

Atur permission setelah deployment.

Jangan gunakan

777

kecuali untuk debugging sementara.

Gunakan user deploy yang konsisten.

7. Route Cache Error

Laravel memiliki fitur route cache untuk mempercepat aplikasi. Namun, route cache bisa menyebabkan error jika route berubah.

Penyebab

Route lama masih tersimpan.

Menggunakan closure route saat menjalankan

route:cache

.

Controller dipindahkan tetapi cache belum dibersihkan.

Nama route duplikat.

Solusi

Bersihkan cache route:

php artisan route:clear

Buat ulang cache:

php artisan route:cache

Jika ada closure route seperti ini:

Route::get(‘/test’, function () {

    return ‘Test’;

});

Pindahkan ke controller jika ingin memakai route cache di production.

Cara Mencegah

Gunakan controller untuk route production.

Jalankan

route:clear

setelah mengubah route.

Hindari nama route yang sama.

8. Config Cache Error

Error config cache sering terjadi setelah mengubah

.env

, tetapi aplikasi masih membaca konfigurasi lama.

Penyebab

config:cache

menyimpan konfigurasi lama.

.env

berubah tetapi cache belum dibersihkan.

Memanggil

env()

langsung di luar folder config.

File konfigurasi salah format.

Solusi

Jalankan:

php artisan config:clear

php artisan cache:clear

php artisan config:cache

Jangan gunakan

env()

langsung di controller. Gunakan file config:

config(‘app.name’)

Cara Mencegah

Gunakan

env()

hanya di file dalam folder

config

.

Setelah mengubah

.env

, bersihkan config cache.

Validasi file konfigurasi sebelum deploy.

9. Composer Autoload Error

Error autoload terjadi ketika Laravel tidak bisa menemukan class, package, atau file yang dibutuhkan.

Penyebab

Vendor belum terinstall.

Namespace salah.

Class dipindahkan tetapi autoload belum diperbarui.

Package Composer belum diinstall.

File

composer.lock

tidak sinkron.

Solusi

Jalankan:

composer install

composer dump-autoload

Jika dependency berubah:

composer update

Untuk production:

composer install –no-dev –optimize-autoloader

Cara Mencegah

Commit

composer.json

dan

composer.lock

.

Gunakan namespace sesuai PSR-4.

Jalankan

composer dump-autoload

setelah membuat class manual.

10. Queue Error

Queue digunakan untuk menjalankan pekerjaan berat di background, seperti mengirim email, memproses file, atau sinkronisasi data.

Penyebab

Queue worker tidak berjalan.

Driver queue salah.

Job gagal karena exception.

Tabel jobs belum dibuat.

Supervisor belum dikonfigurasi.

Redis/database queue tidak tersedia.

Solusi

Jika memakai database queue:

php artisan queue:table

php artisan migrate

Jalankan worker:

php artisan queue:work

Cek failed job:

php artisan queue:failed

Retry job gagal:

php artisan queue:retry all

Cara Mencegah

Gunakan Supervisor di production.

Catat exception dalam job.

Gunakan retry dan timeout yang realistis.

Monitor failed jobs secara rutin.

11. Scheduler Tidak Jalan

Laravel Scheduler digunakan untuk menjalankan task otomatis seperti cron job.

Penyebab

Cron server belum dikonfigurasi.

Perintah schedule tidak terdaftar.

Timezone salah.

Task error saat dijalankan.

Queue worker tidak aktif jika scheduler memanggil job queue.

Solusi

READ  Cara Mengatasi DHCP Starvation di MikroTik: Panduan Lengkap Anti Down & Auto Stabil

Tambahkan cron:

* * * * * cd /path/project && php artisan schedule:run >> /dev/null 2>&1

Cek daftar schedule:

php artisan schedule:list

Jalankan manual:

php artisan schedule:run

Cara Mencegah

Pastikan cron aktif di server.

Gunakan log pada scheduled task.

Atur timezone di

config/app.php

.

Tes schedule secara manual setelah deployment.

12. Session Error

Session error dapat menyebabkan login gagal, CSRF mismatch, atau data flash message tidak muncul.

Penyebab

Session driver salah.

Folder session tidak writable.

Cookie domain salah.

Session lifetime terlalu pendek.

Redis/database session belum siap.

Solusi

Cek

.env

:

SESSION_DRIVER=file

SESSION_LIFETIME=120

Jika memakai database:

php artisan session:table

php artisan migrate

Bersihkan cache:

php artisan config:clear

Cara Mencegah

Gunakan session driver sesuai kebutuhan.

Pastikan storage writable.

Atur cookie domain dengan benar.

Gunakan Redis untuk aplikasi dengan traffic besar.

13. Database Connection Error

Error koneksi database adalah salah satu error Laravel paling umum.

Penyebab

Host database salah.

Username/password salah.

Database belum dibuat.

Port salah.

Service database mati.

Konfigurasi

.env

belum terbaca.

Solusi

Cek

.env

:

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=nama_database

DB_USERNAME=root

DB_PASSWORD=

Tes koneksi:

php artisan migrate:status

Bersihkan config cache:

php artisan config:clear

Cara Mencegah

Gunakan kredensial database khusus aplikasi.

Jangan hardcode konfigurasi database.

Pastikan database server aktif.

Simpan konfigurasi production dengan aman.

14. Migration Failed

Migration gagal ketika Laravel tidak bisa membuat, mengubah, atau menghapus tabel database.

Penyebab

Struktur tabel sudah ada.

Nama kolom duplikat.

Foreign key gagal.

Tipe data tidak cocok.

Urutan migration salah.

Database user tidak punya permission.

Solusi

Cek status migration:

php artisan migrate:status

Rollback migration terakhir:

php artisan migrate:rollback

Jalankan ulang:

php artisan migrate

Untuk development, bisa memakai:

php artisan migrate:fresh

Namun, jangan gunakan

migrate:fresh

di production karena akan menghapus tabel.

Cara Mencegah

Review migration sebelum deploy.

Gunakan foreign key dengan urutan yang benar.

Backup database sebelum migration production.

Hindari mengubah migration lama yang sudah berjalan di production.

15. Sanctum Error

Laravel Sanctum sering digunakan untuk autentikasi SPA dan API token.

Penyebab

Middleware Sanctum belum dikonfigurasi.

Domain stateful salah.

CSRF cookie belum diminta.

Token tidak dikirim.

CORS salah konfigurasi.

Solusi

Pastikan konfigurasi

.env

:

SANCTUM_STATEFUL_DOMAINS=localhost:3000,domainanda.com

SESSION_DOMAIN=.domainanda.com

Untuk SPA, request dulu endpoint:

/sanctum/csrf-cookie

Kemudian login menggunakan request yang menyertakan cookie.

Cara Mencegah

Bedakan penggunaan Sanctum untuk SPA dan API token.

Atur CORS dengan benar.

Gunakan HTTPS di production.

Jangan lupa middleware

auth:sanctum

.

16. Passport Error

Laravel Passport digunakan untuk OAuth2 authentication.

Penyebab

Key Passport belum dibuat.

Client belum dibuat.

Migration belum dijalankan.

Token expired.

Konfigurasi guard salah.

Solusi

Jalankan:

php artisan passport:install

Jika key hilang:

php artisan passport:keys

Pastikan guard:

‘api’ => [

    ‘driver’ => ‘passport’,

    ‘provider’ => ‘users’,

],

Cara Mencegah

Simpan key Passport dengan aman.

Jalankan migration sebelum install Passport.

Gunakan Sanctum jika kebutuhan authentication lebih sederhana.

17. File Upload Error

Error upload file bisa terjadi karena validasi, permission, konfigurasi PHP, atau storage Laravel.

Penyebab

Ukuran file melebihi batas PHP.

Folder storage tidak writable.

Symbolic link storage belum dibuat.

Validasi mime type gagal.

Disk filesystem salah.

Solusi

Cek konfigurasi PHP:

upload_max_filesize=20M

post_max_size=20M

Buat storage link:

php artisan storage:link

Contoh upload:

$request->file(‘avatar’)->store(‘avatars’, ‘public’);

Cara Mencegah

Validasi ukuran dan tipe file.

Gunakan storage disk yang jelas.

Jangan menyimpan file user langsung di folder public tanpa validasi.

Pastikan permission storage benar.

18. Redis Error

Redis sering dipakai untuk cache, queue, session, dan broadcasting.

Penyebab

Redis server mati.

Host/port salah.

Extension PHP Redis belum tersedia.

Password Redis salah.

Konfigurasi client tidak cocok.

Solusi

Cek

.env

:

REDIS_HOST=127.0.0.1

REDIS_PASSWORD=null

REDIS_PORT=6379

Tes Redis:

redis-cli ping

Jika berhasil, hasilnya:

PONG

Cara Mencegah

Monitor service Redis.

Gunakan password Redis di production.

Jangan expose Redis ke publik.

Pastikan queue worker membaca konfigurasi terbaru.

19. Cache Driver Error

Cache driver error terjadi ketika Laravel tidak bisa membaca atau menulis cache.

Penyebab

Driver cache tidak tersedia.

Redis/Memcached mati.

Folder cache tidak writable.

Config cache salah.

Package pendukung belum terinstall.

Solusi

Gunakan file cache untuk debugging:

CACHE_DRIVER=file

Bersihkan cache:

php artisan cache:clear

php artisan config:clear

Jika memakai Redis, pastikan Redis aktif.

Cara Mencegah

Pilih cache driver sesuai skala aplikasi.

Gunakan Redis untuk production dengan traffic tinggi.

Pastikan konfigurasi cache tidak berubah tanpa clear config.

20. View Not Found

Error ini muncul ketika Laravel tidak menemukan file Blade.

Penyebab

Nama view salah.

File Blade tidak ada.

Folder view salah struktur.

Cache view masih menyimpan referensi lama.

Solusi

Jika file berada di:

resources/views/pages/home.blade.php

Panggil dengan:

return view(‘pages.home’);

Bersihkan view cache:

php artisan view:clear

Cara Mencegah

Gunakan struktur folder view yang konsisten.

Hindari typo nama file.

Bersihkan cache view setelah deploy.

21. Class Not Found

Error Class not found terjadi ketika PHP tidak bisa menemukan class yang dipanggil.

Penyebab

Namespace salah.

File class belum dibuat.

Autoload Composer belum diperbarui.

Import

use

belum ditambahkan.

Nama class tidak sesuai nama file.

Solusi

Tambahkan import:

use App\Models\User;

Jalankan:

composer dump-autoload

Cara Mencegah

Ikuti standar PSR-4.

Gunakan IDE dengan auto-import.

Jangan memindahkan file tanpa memperbarui namespace.

22. Target Class Does Not Exist

Error ini sering muncul pada controller, middleware, listener, atau dependency injection.

Penyebab

Controller belum dibuat.

Nama controller salah di route.

Namespace tidak sesuai.

Binding service container belum dibuat.

Solusi

Contoh route benar:

use App\Http\Controllers\PostController;

 

Route::get(‘/posts’, [PostController::class, ‘index’]);

Bersihkan route cache:

php artisan route:clear

Cara Mencegah

Gunakan format route controller modern.

Hindari string controller lama jika tidak diperlukan.

Cek route list secara rutin.

23. Method Not Allowed

Error 405 Method Not Allowed muncul ketika URL ada, tetapi method HTTP salah.

Penyebab

Route hanya menerima POST, tetapi request memakai GET.

Form tidak menyertakan method spoofing.

AJAX memakai method salah.

Route resource tidak sesuai.

Solusi

Cek route:

php artisan route:list

Untuk PUT/PATCH/DELETE di form Blade:

@method(‘PUT’)

@csrf

Cara Mencegah

Sesuaikan method form dengan route.

Gunakan route name.

Pahami method pada resource controller.

24. Too Many Redirects

Error ini terjadi ketika aplikasi terus melakukan redirect tanpa berhenti.

Penyebab

Middleware auth salah konfigurasi.

Redirect login berulang.

HTTPS redirect loop.

Proxy/load balancer belum dikonfigurasi.

Route guest dan auth bertabrakan.

Solusi

Cek middleware pada route. Jika memakai reverse proxy, konfigurasi trusted proxy dengan benar.

Pastikan

APP_URL

sesuai:

APP_URL=https://domainanda.com

Cara Mencegah

Pisahkan route guest dan auth.

Tes redirect setelah deploy.

Gunakan konfigurasi HTTPS yang konsisten.

25. Mixed Content Error

Mixed content terjadi ketika halaman HTTPS memuat asset HTTP.

Penyebab

APP_URL

masih HTTP.

Asset menggunakan URL hardcoded.

CDN tidak memakai HTTPS.

Proxy SSL tidak terdeteksi Laravel.

Solusi

Ubah:

APP_URL=https://domainanda.com

Gunakan helper:

asset(‘css/app.css’)

Jangan hardcode:

http://domainanda.com/style.css

Cara Mencegah

Gunakan HTTPS untuk semua asset.

Pastikan CDN mendukung SSL.

Hindari hardcoded URL.

26. Asset Not Loading

CSS, JavaScript, atau gambar tidak tampil setelah deploy.

Penyebab

Build frontend belum dijalankan.

Path asset salah.

Symbolic link belum dibuat.

File tidak ada di server.

Permission file bermasalah.

Solusi

Untuk Vite:

npm install

npm run build

Pastikan Blade menggunakan:

@vite([‘resources/css/app.css’, ‘resources/js/app.js’])

READ  Wisata Kuliner, Deli Food Court Pematangsiantar

Untuk file storage:

php artisan storage:link

Cara Mencegah

Jalankan build saat deployment.

Commit konfigurasi Vite dengan benar.

Jangan menghapus folder public build.

27. Vite Manifest Not Found

Error ini umum terjadi pada Laravel modern yang memakai Vite.

Penyebab

npm run build

belum dijalankan.

Folder

public/build

tidak ada.

Deployment tidak mengunggah hasil build.

Mode development/production tertukar.

Solusi

Jalankan:

npm install

npm run build

Pastikan folder ini ada:

public/build/manifest.json

Cara Mencegah

Masukkan proses build ke pipeline deployment.

Pastikan

public/build

ikut tersedia di server.

Jangan menjalankan production tanpa build asset.

28. NPM Build Failed

Error build frontend bisa terjadi pada project Laravel yang memakai Vite, Tailwind, Vue, React, atau package frontend lainnya.

Penyebab

Versi Node tidak cocok.

Dependency belum diinstall.

Package lock konflik.

Environment variable frontend salah.

Syntax error di JavaScript/CSS.

Solusi

Cek versi Node:

node -v

npm -v

Install ulang:

rm -rf node_modules package-lock.json

npm install

npm run build

Cara Mencegah

Gunakan versi Node yang stabil.

Simpan

package-lock.json

.

Jalankan build lokal sebelum deploy.

29. Mail Not Sending

Email tidak terkirim dari aplikasi Laravel.

Penyebab

Konfigurasi SMTP salah.

Port diblokir server.

Username/password salah.

Mail driver salah.

Queue email tidak berjalan.

Solusi

Cek

.env

:

MAIL_MAILER=smtp

MAIL_HOST=smtp.mailtrap.io

MAIL_PORT=587

MAIL_USERNAME=xxxxx

MAIL_PASSWORD=xxxxx

MAIL_ENCRYPTION=tls

[email protected]

MAIL_FROM_NAME=”${APP_NAME}”

Jika email dikirim via queue, pastikan worker berjalan:

php artisan queue:work

Cara Mencegah

Gunakan provider email terpercaya.

Tes email di staging.

Simpan konfigurasi email dengan aman.

Monitor email gagal.

30. Validation Error Tidak Muncul

Kadang validasi gagal, tetapi pesan error tidak tampil di halaman.

Penyebab

Blade tidak menampilkan error.

Session tidak berjalan.

Redirect tidak membawa error.

Nama input tidak sesuai.

AJAX tidak menangani response error.

Solusi

Tampilkan error di Blade:

@error(‘email’)

    <div> $message </div>

@enderror

Atau tampilkan semua:

@if ($errors->any())

    <ul>

        @foreach ($errors->all() as $error)

            <li> $error </li>

        @endforeach

    </ul>

@endif

Cara Mencegah

Gunakan Form Request untuk validasi kompleks.

Pastikan session aktif.

Tangani error validasi pada frontend.

31. Mass Assignment Error

Error ini muncul saat menggunakan

create()

atau

update()

pada model Eloquent.

Penyebab

Field belum masuk

$fillable

.

Model menggunakan

$guarded

.

Input berisi field yang tidak boleh diisi massal.

Solusi

Tambahkan fillable:

protected $fillable = [

    ‘name’,

    ‘email’,

    ‘password’,

];

Atau gunakan assignment manual:

$user->name = $request->name;

$user->save();

Cara Mencegah

Jangan asal memakai

$guarded = []

untuk data sensitif.

Batasi field yang boleh diisi user.

Validasi request sebelum menyimpan data.

32. SQLSTATE Integrity Constraint Violation

Error ini biasanya berhubungan dengan unique key, foreign key, atau data yang tidak valid.

Penyebab

Email sudah terdaftar.

Foreign key mengarah ke data yang tidak ada.

Kolom wajib diisi tetapi nilainya null.

Data duplikat pada kolom unique.

Solusi

Validasi unique:

‘email’ => ‘required|email|unique:users,email’

Pastikan foreign key valid sebelum insert.

Cara Mencegah

Gunakan validasi sebelum query.

Tangani exception database.

Buat pesan error yang jelas untuk user.

33. N+1 Query Problem

Ini bukan error fatal, tetapi dapat membuat aplikasi sangat lambat.

Penyebab

Mengakses relasi dalam loop tanpa eager loading.

Query berulang untuk setiap item.

Struktur Eloquent tidak efisien.

Solusi

Gunakan eager loading:

$posts = Post::with(‘author’)->get();

Bukan:

$posts = Post::all();

 

foreach ($posts as $post) {

    echo $post->author->name;

}

Cara Mencegah

Gunakan Laravel Debugbar saat development.

Review query sebelum production.

Terapkan eager loading pada halaman daftar.

34. Model Not Found

Error ini terjadi ketika data berdasarkan ID tidak ditemukan.

Penyebab

ID tidak ada di database.

Data sudah dihapus.

Route model binding gagal.

Query menggunakan scope yang membatasi data.

Solusi

Gunakan

findOrFail()

jika ingin otomatis 404:

$post = Post::findOrFail($id);

Atau tangani manual:

$post = Post::find($id);

 

if (!$post) {

    abort(404);

}

Cara Mencegah

Validasi parameter route.

Gunakan halaman 404 yang informatif.

Jangan menampilkan error mentah ke user.

35. Token Expired

Token expired sering terjadi pada password reset, API token, atau email verification.

Penyebab

Token melewati waktu berlaku.

Token sudah digunakan.

Konfigurasi expiration terlalu pendek.

Waktu server tidak sinkron.

Solusi

Cek konfigurasi token sesuai fitur yang digunakan. Untuk password reset, cek

config/auth.php

.

Pastikan waktu server benar:

date

Cara Mencegah

Gunakan durasi token yang wajar.

Beri pesan jelas kepada user.

Sinkronkan waktu server dengan NTP.

36. CORS Error

CORS error umum pada API Laravel yang diakses frontend berbeda domain.

Penyebab

Domain frontend belum diizinkan.

Method atau header tidak diizinkan.

Credentials/cookie tidak dikonfigurasi.

Preflight request gagal.

Solusi

Cek konfigurasi CORS di

config/cors.php

.

Contoh:

‘allowed_origins’ => [‘https://frontendanda.com’],

‘allowed_methods’ => [‘*’],

‘allowed_headers’ => [‘*’],

‘supports_credentials’ => true,

Bersihkan cache config:

php artisan config:clear

Cara Mencegah

Jangan gunakan wildcard sembarangan untuk production.

Daftarkan domain frontend secara eksplisit.

Tes API dari browser, bukan hanya Postman.

37. API 401 Unauthorized

Error 401 berarti request belum terautentikasi.

Penyebab

Token tidak dikirim.

Token salah atau expired.

Guard salah.

Header Authorization tidak terbaca.

Middleware auth tidak sesuai.

Solusi

Kirim header:

Authorization: Bearer TOKEN_ANDA

Pastikan route memakai guard yang benar:

Route::middleware(‘auth:sanctum’)->get(‘/user’, function (Request $request) {

    return $request->user();

});

Cara Mencegah

Dokumentasikan format authentication API.

Gunakan middleware sesuai jenis token.

Tangani token expired di frontend.

38. API 403 Forbidden

Error 403 berarti user sudah login, tetapi tidak punya izin.

Penyebab

Policy menolak akses.

Gate mengembalikan false.

Role/permission tidak sesuai.

User mencoba mengakses data orang lain.

Solusi

Cek policy:

public function update(User $user, Post $post)

{

    return $user->id === $post->user_id;

}

Gunakan authorization:

$this->authorize(‘update’, $post);

Cara Mencegah

Buat policy untuk resource penting.

Jangan hanya menyembunyikan tombol di frontend.

Selalu validasi izin di backend.

39. API 422 Unprocessable Entity

Error 422 biasanya muncul ketika validasi request API gagal.

Penyebab

Field wajib tidak dikirim.

Format data salah.

Email tidak valid.

File tidak sesuai aturan.

JSON request tidak sesuai.

Solusi

Cek response JSON Laravel. Biasanya berisi:

{

  “message”: “The given data was invalid.”,

  “errors”: {

    “email”: [“The email field is required.”]

  }

}

Perbaiki request sesuai validasi.

Cara Mencegah

Buat dokumentasi API request.

Gunakan Form Request.

Tampilkan pesan validasi dengan baik di frontend.

40. API 429 Too Many Requests

Error 429 terjadi ketika request terlalu sering dan terkena rate limit.

Penyebab

User terlalu banyak request.

Bot menyerang endpoint.

Rate limiter terlalu rendah.

Frontend melakukan request berulang tanpa kontrol.

Solusi

Atur rate limit di Laravel:

RateLimiter::for(‘api’, function (Request $request) {

    return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());

});

Cara Mencegah

Gunakan rate limit untuk endpoint login dan API publik.

Tambahkan debounce di frontend.

Monitor IP dengan request abnormal.

41. Pagination Error

Pagination error bisa muncul ketika query, parameter halaman, atau view pagination bermasalah.

Penyebab

Query terlalu berat.

Parameter page tidak valid.

View pagination belum dipublish.

Menggunakan

get()

padahal butuh

paginate()

.

Solusi

Gunakan:

$posts = Post::latest()->paginate(10);

Di Blade:

$posts->links()

Cara Mencegah

Gunakan pagination untuk data besar.

Validasi parameter filter.

Hindari mengambil semua data dengan

all()

untuk halaman daftar.

42. Storage Link Error

File berhasil diupload tetapi tidak bisa diakses melalui browser.

Penyebab

php artisan storage:link

belum dijalankan.

Symbolic link tidak didukung hosting.

File disimpan di disk private.

Path URL salah.

Solusi

Jalankan:

php artisan storage:link

READ  Pengertian Lengkap Programming dan Peluang Karir

Akses file public melalui:

Storage::url($path)

Cara Mencegah

Pastikan disk

public

dikonfigurasi benar.

Jalankan storage link setelah deployment.

Untuk hosting tanpa symlink, gunakan strategi upload yang sesuai.

43. Blade Syntax Error

Blade syntax error terjadi ketika template memiliki penulisan directive yang salah.

Penyebab

@if

tidak ditutup

@endif

.

Kurung kurawal tidak lengkap.

Variabel tidak tersedia.

Komentar HTML berisi syntax Blade bermasalah.

Solusi

Cek file Blade yang disebutkan di error. Bersihkan cache view:

php artisan view:clear

Contoh benar:

@if ($user)

     $user->name

@endif

Cara Mencegah

Gunakan indentation rapi.

Hindari logic terlalu kompleks di Blade.

Pecah komponen besar menjadi partial/component.

44. Undefined Variable

Error ini muncul ketika view memakai variabel yang tidak dikirim dari controller.

Penyebab

Controller tidak mengirim data.

Nama variabel salah.

Kondisi tertentu tidak mendefinisikan variabel.

View partial mengharapkan data yang tidak tersedia.

Solusi

Kirim data:

return view(‘posts.index’, [

    ‘posts’ => $posts,

]);

Di Blade, gunakan fallback:

$title ?? ‘Tanpa Judul’

Cara Mencegah

Konsisten memberi nama variabel.

Gunakan view model atau DTO untuk halaman kompleks.

Hindari partial yang bergantung pada variabel tidak jelas.

45. Undefined Index atau Undefined Array Key

Error ini umum terjadi saat mengakses array tanpa mengecek key.

Penyebab

Key array tidak ada.

Request input tidak dikirim.

Response API eksternal berubah.

Data JSON tidak sesuai ekspektasi.

Solusi

Gunakan helper:

$value = $request->input(‘name’);

Atau null coalescing:

$name = $data[‘name’] ?? null;

Cara Mencegah

Validasi input.

Jangan percaya struktur data eksternal 100%.

Gunakan DTO atau resource class untuk data kompleks.

46. Allowed Memory Size Exhausted

Error ini terjadi ketika script PHP memakai memori melebihi batas.

Penyebab

Mengambil data terlalu banyak sekaligus.

Import file besar tanpa chunking.

Query tidak efisien.

Loop menyimpan data besar di memory.

Solusi

Gunakan chunk:

User::chunk(100, function ($users) {

    foreach ($users as $user) {

        // proses data

    }

});

Untuk export besar, gunakan queue.

Cara Mencegah

Jangan memakai

Model::all()

untuk data besar.

Gunakan pagination, chunk, atau cursor.

Monitor memory saat menjalankan job.

47. Maximum Execution Time Exceeded

Error ini muncul ketika proses berjalan terlalu lama.

Penyebab

Query lambat.

Import/export besar.

Request menunggu API eksternal.

Proses berat dijalankan langsung di HTTP request.

Solusi

Pindahkan proses berat ke queue:

php artisan queue:work

Optimalkan query dan tambahkan index database jika perlu.

Cara Mencegah

Jangan menjalankan proses berat langsung saat user menunggu.

Gunakan queue untuk email, export, import, dan sinkronisasi.

Terapkan timeout dan retry untuk API eksternal.

48. Deployment Error

Deployment error terjadi ketika aplikasi berjalan baik di lokal, tetapi gagal di server.

Penyebab

Versi PHP berbeda.

Ekstensi PHP belum tersedia.

.env

production salah.

Composer dependency belum terinstall.

Permission folder salah.

Cache lama masih aktif.

Solusi

Checklist deployment:

composer install –no-dev –optimize-autoloader

php artisan migrate –force

php artisan config:clear

php artisan route:clear

php artisan view:clear

php artisan cache:clear

php artisan config:cache

php artisan route:cache

php artisan view:cache

Jika memakai frontend:

npm install

npm run build

Cara Mencegah

Buat checklist deployment.

Gunakan staging environment.

Samakan versi PHP lokal dan server.

Backup database sebelum deploy besar.

49. Environment Variable Not Working

Kadang perubahan

.env

tidak berpengaruh di Laravel.

Penyebab

Config cache masih aktif.

Salah nama variable.

Ada spasi atau karakter khusus tanpa quote.

Menggunakan

env()

langsung di runtime.

File

.env

tidak terbaca.

Solusi

Bersihkan config:

php artisan config:clear

Jika value mengandung spasi, gunakan quote:

APP_NAME=”Aplikasi Laravel Saya”

Gunakan:

config(‘app.name’)

bukan:

env(‘APP_NAME’)

di controller.

Cara Mencegah

Setelah ubah

.env

, jalankan

config:clear

.

Gunakan file config sebagai perantara.

Jangan menyimpan

.env

di repository publik.

50. Log File Tidak Terbuat

Log sangat penting untuk debugging, tetapi kadang Laravel tidak bisa membuat log.

Penyebab

Folder

storage/logs

tidak writable.

Permission folder salah.

Disk penuh.

Konfigurasi logging salah.

User web server tidak punya akses.

Solusi

Cek folder:

ls -la storage/logs

Set permission:

chmod -R 775 storage

chown -R www-data:www-data storage

Cek konfigurasi

.env

:

LOG_CHANNEL=stack

LOG_LEVEL=debug

Cara Mencegah

Monitor kapasitas disk.

Rotasi log secara berkala.

Pastikan permission storage benar setelah deploy.

Jangan mematikan logging di production.

Checklist Cepat Troubleshooting Laravel

Jika aplikasi Laravel error dan belum tahu penyebabnya, gunakan checklist berikut:

Cek file log:

storage/logs/laravel.log

Aktifkan debug sementara di lokal atau staging:

APP_DEBUG=true

Bersihkan cache:

php artisan optimize:clear

Cek konfigurasi

.env

.

Pastikan

APP_KEY

tersedia:

php artisan key:generate

Cek permission:

chmod -R 775 storage bootstrap/cache

Cek route:

php artisan route:list

Cek koneksi database:

php artisan migrate:status

Install dependency:

composer install

Build asset frontend:

npm install

npm run build

Tips Mencegah Error Laravel di Production

Mencegah error jauh lebih baik daripada memperbaiki error setelah aplikasi digunakan user. Berikut beberapa praktik yang disarankan.

1. Gunakan Environment Terpisah

Pisahkan konfigurasi lokal, staging, dan production. Jangan menggunakan database production untuk testing sembarangan.

2. Jangan Menampilkan Error Mentah ke User

Di production, gunakan:

APP_DEBUG=false

APP_ENV=production

Error detail sebaiknya hanya dilihat developer melalui log.

3. Gunakan Version Control

Gunakan Git agar perubahan kode bisa dilacak dan dikembalikan jika deployment bermasalah.

4. Buat Checklist Deployment

Checklist sederhana dapat mencegah error klasik seperti lupa

composer install

, lupa

npm run build

, lupa

storage:link

, atau lupa

php artisan migrate

.

5. Monitor Log dan Server

Pantau log Laravel, log web server, CPU, RAM, disk, queue, dan database. Banyak error production sebenarnya bisa diketahui lebih awal dari monitoring.

6. Gunakan Queue untuk Proses Berat

Jangan memproses export besar, pengiriman email massal, resize gambar, atau sinkronisasi API langsung di request user.

7. Backup Sebelum Migration

Sebelum menjalankan migration di production, selalu backup database. Migration yang salah bisa menyebabkan kehilangan data.

8. Gunakan Validasi Input

Banyak error berasal dari input user yang tidak sesuai. Gunakan Form Request agar validasi lebih rapi dan mudah dikelola.

9. Hindari Hardcode Konfigurasi

Gunakan

.env

dan file

config

. Jangan menulis password database, API key, atau URL production langsung di kode.

10. Dokumentasikan Error yang Pernah Terjadi

Buat catatan internal setiap kali menemukan error baru. Catatan tersebut akan sangat membantu ketika error serupa muncul kembali.

Kesimpulan

Laravel menyediakan banyak fitur yang memudahkan pengembangan aplikasi web modern, tetapi setiap fitur juga memiliki potensi error jika konfigurasi, struktur kode, atau proses deployment tidak dilakukan dengan benar. Error seperti 500 Internal Server Error, 404 Not Found, 419 Page Expired, CSRF Token Mismatch, APP_KEY Missing, permission storage, route cache, config cache, Composer autoload, queue, scheduler, session, database connection, migration, Sanctum, Passport, file upload, Redis, dan cache driver adalah masalah yang sangat sering ditemui developer Laravel.

Kunci utama debugging Laravel adalah membaca log, memahami alur request, mengecek konfigurasi

.env

, membersihkan cache yang relevan, memastikan permission folder benar, dan menjalankan perintah Artisan sesuai kebutuhan. Untuk production, pencegahan menjadi lebih penting: gunakan deployment checklist, monitoring, backup database, queue worker yang stabil, konfigurasi server yang aman, dan proses testing sebelum rilis.

Dengan memahami 50 error Laravel di atas, developer dapat memperbaiki masalah lebih cepat, mengurangi downtime, dan membangun aplikasi Laravel yang lebih stabil, aman, serta mudah dirawat dalam jangka panjang.

ARTIKEL TERLAMA

Related Articles