• Indonesian
  • English
  • Cara Debug Laravel: Panduan Lengkap Step-by-Step 2026

    Kecepatan:
    ⏱ 16 min read

    Cara Debug Website Laravel untuk Teknisi Hosting: Panduan Lengkap Step-by-Step

    Difficulty: Beginner
    Last Updated: Juli 2026
    Tested On: Laravel 9/10/11 (PHP 8.1-8.3) di cPanel, DirectAdmin, dan VPS AlmaLinux/Ubuntu

    Lha, cerito sithik. Seminggu kepungkur ana client nelpon panik jam setengah lima sore. “Mas, website ku kok putih? Isine kosong kabeh!” Suarane campur bingung lan wedi. Pas tak cek, bener wae — blank page. Halaman web e putih pol, tanpa error message, tanpa apa-apa. Kaya restoran sing buka tapi gak ana koki e. Sampeyan ngerti rasa panik teknisi sing lagi blank? Iku sing tak alami pas iku.

    Website e ternyata Laravel. Masalahe, tim hosting e — kalebu aku — jarang banget megang Laravel. Daily job biasa: WordPress, cPanel, DNS, email, gitu-gitu. Tapi nek wis dadi tanggung jawab, ya kudu belajar. Sing nyekel atiku pas iku: ternyata akar masalah e gak serumit sing tak bayangno. Malah iso dibenerno kurang sejam. Pengalaman iki sing arep tak share neng artikel iki — lengkap, step-by-step, soko nol.

    Bayangno website Laravel iku kayak restoran sing struktur e berlapis. Ada pintu masuk, ada resepsionis, ada dapur, ada koki. Request soko pengunjung masuk lewat pintu (public/index.php), diperiksa resepsionis (middleware), diteruske neng koki (controller), trus diantar balik neng tamu (blade view). Nah, nek ana salah siji lapisan sing rusak, hasil e iso beda-beda: kadang piring kosong (blank page), kadang muncul tulisan “500 Internal Server Error”, kadang tamu e ditolak satpam. Soko kono, tebakan asal-asalan gak bakal ketemu — sampeyan kudu liat lapisan demi lapisan.

    Masalahe, Laravel iku beda banget karo website PHP biasa kayak WordPress. Kalau WordPress error, muncule langsung jelas — kadang muncul halaman error, kadang cuma butuh cek PHP error log sing muni. Laravel punya struktur request sing luwih berlapis, dadi error e iso nyamar. Siji typo di config, langsung 500. Siji permission salah di storage, website iso dadi blank page tanpa pesan apa-apa. Nek sampeyan teknisi hosting sing sehari-hari megang WordPress, kebiasaan lama — buka error_log, ganti plugin, reset htaccess — seringkali ora mempan nang Laravel. Iki sing bikin akeh teknisi bingung pertama kali, kalebu aku. Impact e nek gak ketemu: server down makin suwe, client nelpon terus, management ngejar-ngejar, lan kalau website e e-commerce sing lagi rame, revenue ilang saben menit. Dadi skill debug Laravel iki bukan cuma nice-to-have, tapi wis dadi kewajiban teknisi hosting modern.

    Gejala sing paling umum muncul: (1) blank page putih tanpa pesan, (2) 500 Internal Server Error, (3) 419 Page Expired, (4) error “No application encryption key has been specified”, (5) “Permission denied” pas nulis file, lan (6) error kayak “Class not found” sing nunjuk ke vendor. Soko gejala wae, sebenarnya wis iso ketebak sumber masalah e. Tinggal tau carane konfirmasi. Saben gejala nunjuk ke lapisan sing beda, lan tugas sampeyan cuma konfirmasi lapisan mana sing rusak.

    Inti debugging iku sebenarnya bukan hafalan perintah, tapi urutan berpikir: gejala, sumber, solusi. Jangan langsung ngoprek file sembarangan tanpa tau apa sing rusak. Mulai soko gejala, trus lari neng log, baru eksekusi. Aku wis ngalamin piro-piro kasus: teknisi mbuang wektu rong jam cuma gara-gara ora maca log dhisik — malah ganti file, restart service, sampe akhire log e muni cuma “Permission denied” sing mung butuh siji perintah chmod. Mula soko artikel iki, aku pengen sampeyan duwe alur pikir sing rapi pas megang Laravel, bukan cuma ngafalin command. Enek link sing iso sampeyan buka nek butuh refresher cara maca log: cara baca log error di Linux.

    Langkah 0: Pastikan Dulu Ini Beneran Laravel

    Sebelum ngoprek, pastikan aplikasi e beneran Laravel, bukan framework lain kayak CodeIgniter, Symfony, atawa Yii — apalagi cuma script PHP biasa. Cek telu hal iki: (1) ada file “artisan” neng root aplikasi? (2) ada file “composer.json”? (3) ada folder app, routes, resources/views? Kalau iya, kemungkinan besar Laravel.

    ls -la /home/client/public_html

    Output e bakal nampilno file-file khas Laravel: artisan, composer.json, .env (kadang hidden), folder app, bootstrap, config, database, public, resources, routes, storage, tests, vendor. Kehadiran file artisan iku tanda paling pasti — Laravel punya command line sendiri (php artisan), lan iku dadi alat bantu utama sampeyan.

    Kalau file-file kuwi gak ana, berarti ini bukan Laravel — berhenti dhisik, aja diterusno step berikut e. Artikel iki fokus ke Laravel, tapi akeh prinsip e tetep berlaku buat framework PHP modern sing liyane.

    Langkah 1: Cek File .env — Kunci Gudang yang Sering Hilang

    File .env iku ibarat kunci gudang. Isine variabel penting: APP_KEY, APP_DEBUG, APP_ENV, DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD, mail setting, sampe config cache. Kalau file iki gak ana atawa isine kosong, Laravel iso error total. Kasus paling umum: client pindah server, backup-an cuma ngambil file public e, .env ketinggalan. Atawa pas install, .env cuma salinan .env.example sing durung diisi APP_KEY.

    cat /home/client/public_html/.env

    Sing penting sampeyan gatekno neng kene: (1) APP_ENV: “production” atawa “local”. (2) APP_DEBUG: “true” atawa “false”. (3) APP_KEY: kudu ana value base64 sing panjang. Kalau APP_KEY kosong atawa durung di-generate, sampeyan bakal nemu error iki:

    No application encryption key has been specified.

    Fix e generate ulang key e. Pastikan jalan neng root aplikasi, bukan neng folder public:

    php artisan key:generate

    Kalau gak iso akses SSH, cPanel lan DirectAdmin punya Terminal (Search: “Terminal” atawa lewat menu). Cara alternatif: bikin file PHP sementara sing isine script buat ngejalanin artisan — tapi kalau iso SSH, mending SSH, luwih beresih lan aman. Jangan lupa, setelah key digenerate, clear config cache biar Laravel baca .env anyar: php artisan config:clear.

    PERINGATAN KEAMANAN: Jangan Langsung Set APP_DEBUG=true Neng production, APP_DEBUG wajib false. Tapi pas debugging sementara, sampeyan boleh set true dulu supaya muncul error detail e. Iki cuma metode sementara — setelah ketemu masalah e, langsung balikin false lan clear cache. Aku jelasin kenapa berbahaya neng bagian Pro Tips neng ngisor.

    Langkah 2: Baca Log — Harta Karun Ada di storage/logs/laravel.log

    Iki langkah paling penting neng seluruh artikel. Log Laravel iku kayak buku catatan koki — semua error sing kedadean tercatat neng kono. Lokasi default: storage/logs/laravel.log. Neng beberapa versi Laravel, file e dipisah per tanggal, contoh: laravel-2026-07-30.log. Command paling dasar:

    tail -n 100 /home/client/public_html/storage/logs/laravel.log

    Atawa kalau pengen liat live sambil sampeyan reproduce error e:

    tail -f /home/client/public_html/storage/logs/laravel.log

    Nih, contoh log asli (identitas wis disensor) sing aku temuin pas handle kasus blank page client kemarin:

    [2026-07-24 14:23:01] production.ERROR: The stream or file "/home/client/public_html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied in file /home/client/public_html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:101
    [2026-07-24 14:23:01] production.ERROR: file_put_contents(/home/client/public_html/storage/framework/views/abc123compiled.php): Failed to open stream: Permission denied in file /home/client/public_html/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:104
    [2026-07-24 14:23:02] production.ERROR: The stream or file "/home/client/public_html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied in file /home/client/public_html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:101
    [2026-07-24 14:23:03] production.ERROR: The stream or file "/home/client/public_html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied in file /home/client/public_html/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:101

    Cara maca e gampang, baris demi baris:

    • Baris pertama: Laravel pengen nulis ke storage/logs tapi ditolak — “Permission denied”. Artine folder storage gak iso ditulis sama user PHP.
    • Baris kedua: Folder storage/framework/views uga gak iso ditulis. Iki persis sing nyebabno blank page, karena hasil kompilasi view gak iso disimpen.
    • Baris ketiga lan keempat: Pola e konsisten — semua error nunjuk ke permission. Bukan bug aplikasi, cuma permission. Root cause ketemu.

    Pola maca log umum e: mulai soko baris paling ndhuwur. Gatekno timestamp (jam berapa error e), level (production.ERROR atawa local.ERROR), pesan error e, terus file lan baris neng vendor sing mbuang error. Dua telu baris pertama biasanya wis cukup nunjukno sumber masalah. Kalau log e penuh lan bingung, filter pake grep kata kunci: “Permission denied”, “Class not found”, “SQLSTATE”, “Connection refused”, “Undefined array key”.

    Catatan penting: Kalau log e KOSONG tapi website e tetep error, berarti error kedadean sakdurunge logger iso nulis — biasane .env, vendor, atawa permission. Lanjutke neng langkah berikut e.

    Langkah 3: Permission & Ownership — Musuh Terbesar Teknisi Hosting

    Nah, iki sing paling sering. Neng shared hosting, file iso ke-reset ownership atawa permission e pas restore backup, pindah server, atawa upload lewat FTP pake user sing beda. Gejala klasik: website 500 atawa blank page, lan log e muni “Permission denied” kayak contoh ndhuwur.

    Struktur sing wajib writable: folder storage/ lan bootstrap/cache/. PHP perlu nulis neng rong folder iki buat cache, session, log, lan compiled views. Kalau gak iso, Laravel mogok total. Fokus rong folder iki dhisik sakdurunge mikir opo-opo liyane.

    chown -R client:client /home/client/public_html/storage
    chown -R client:client /home/client/public_html/bootstrap/cache
    chmod -R 775 /home/client/public_html/storage
    chmod -R 775 /home/client/public_html/bootstrap/cache

    Catatan: “client” neng command ndhuwur iku user sing ngejalanin PHP. Neng VPS biasane user aplikasi e, neng shared hosting kadang user cPanel e. Kalau gak yakin, cek user proses PHP e dhisik: ps aux | grep php. Neng cPanel tanpa SSH: File Manager → klik kanan folder storage → Change Permissions → set 755 atawa 775. Kalau PHP e jalan sebagai user beda (misal “nobody”), coba 775. 777 cuma buat tes singkat, aja ditinggal. Kalau butuh materi lengkap soal permission, mampir neng panduan fix permission file Linux iki.

    PERINGATAN KEAMANAN: Backup Sebelum Melanjutkan Sadurunge ngejalanin perintah chmod/chown ndhuwur, pastikan sampeyan wis: (1) yakin target path e bener — cek dhisik ls -ld /home/client/public_html/storage supaya kelihatan ownership sing saiki, (2) aja pernah chown folder liyane neng luar public_html tanpa kebutuhan jelas, (3) aja ninggal 777 neng folder publik — iku undangan buat attacker. Perintah e dhewe gak ngrusak data, tapi salah target iso gawe masalah anyar.

    Langkah 4: Bersihkan Cache — Laravel Sering Nyimpen Config Lama

    Laravel iku suka caching: config, route, view, kabeh iso ke-cache. Kalau client barusan pindah server atawa ubah .env tapi website e isih tampil error atawa isih perilaku e sing lawas, cache iso dadi biang kerok e. Fix standar, jalan neng root aplikasi:

    php artisan optimize:clear
    php artisan config:clear
    php artisan cache:clear
    php artisan view:clear
    php artisan route:clear

    optimize:clear iku perintah pamungkas sing nyapu kabeh sekaligus — jalanin iki dhisik, terus test website e. Kalau artisan gak iso jalan (gak ana SSH), sampeyan iso coba hapus manual file sing ke-kompile neng bootstrap/cache — tapi mending lewat artisan kalau iso.

    Enek siji sing sering kelupaan: setelah ubah .env atawa config, beberapa server pake PHP-FPM opcache sing nyimpen versi lawas file. Kalau wis clear cache tapi error e isih ana, coba restart PHP-FPM:

    systemctl restart php-fpm

    Nama service iso beda-beda — cek dhisik: systemctl list-units | grep php. Neng cPanel, cukup klik “Restart PHP” neng MultiPHP Manager atawa ngenteni opcache expire. Percaya, opcache iki sering banget bikin teknisi garuk-garuk kepala.

    Langkah 5: Error 419 Page Expired — Si Manis yang Sering Salah Teori

    419 Page Expired iku error khas Laravel sing bikin akeh orang bingung. Bukan salah server, bukan salah DNS — ini masalah CSRF token lan session. Maksute: form sing dikirim wis kadaluarsa, atawa session e gak iso diproses. Penyebab paling umum: (1) folder session gak writable (storage/framework/sessions), (2) storage full atawa read-only, (3) config cache nyimpen session driver sing salah, (4) PHP session timeout sing cendek banget — user keburu diem pas ngisi form.

    Fix e urut: (1) pastikan storage/framework/sessions writable (permission 775 + ownership bener), (2) beresno config cache: php artisan config:clear, (3) cek file .env: SESSION_DRIVER default e “file”; kalau dipaksa “database” tapi table sessions durung ana, iso error, (4) restart PHP-FPM biar session handler anyar kebaca.

    Catatan sing penting: error 419 sering muncul neng website e-commerce pas checkout, gara-gara user nganggur suwe neng halaman pembayaran. Iku kadang emang behavior normal keamanan Laravel — bukan selalu bug aplikasi. Dadi aja langsung ngomong “ada bug” ke client, cek session e dhisik.

    Langkah 6: Error 500 Tanpa Log & Blank Page — Cek Vendor dan PHP Version

    Kalau log e kosong lan website e 500 terus, kuda-kuda e biasane: vendor folder gak ana atawa gak lengkap, .env gak ana, atawa versi PHP gak kompatibel. Cek e gampang:

    1) Vendor folder. Cek isine:

    ls /home/client/public_html/vendor

    Kalau gak ana atawa cuma sisa dikit, berarti composer install durung dijalanin. Fix e: composer install --no-dev --optimize-autoloader neng root aplikasi. Kalau server gak ana composer, sampeyan iso kompilasi neng lokal terus upload, atawa minta client e. 2) Versi PHP. Cek: php -v. Pastikan minimal sesuai requirement: Laravel 9 → PHP 8.0+, Laravel 10 → PHP 8.1+, Laravel 11 → PHP 8.2+. Error klasik kalau PHP lawas: “Parse error” atawa fatal error sing aneh. Neng cPanel, ganti versi PHP lewat MultiPHP Manager. 3) Extension PHP. Laravel butuh extension inti: openssl, pdo, mbstring, tokenizer, xml, ctype, json, bcmath. Kalau ana sing ilang, muncul error “Call to undefined function” atawa “Class not found”. Cek: php -m.

    Aja lali rewrite rules. Document root kudu nunjuk ke folder public/, bukan ke root aplikasi. Akeh orang upload Laravel ke public_html tanpa bikin alias ke public/, hasil e muncul file-file aneh atawa gak iso diakses. Neng cPanel: Domains → set document root ke /public_html/public. Neng nginx: root /home/client/public_html/public; Neng .htaccess pastikan mod_rewrite aktif.

    Cheat Sheet: Alur Debug Sing Gampang Dihafal

    1. Gejala apa? Catat error message e persis (screenshot atawa teks).
    2. Cek storage/logs/laravel.log — tail 100 baris, baca pola e.
    3. Log kosong? Cek .env, APP_KEY, APP_DEBUG, kredensial DB.
    4. Cek permission storage/ lan bootstrap/cache/ — chmod 775 + chown bener.
    5. Clear cache: php artisan optimize:clear.
    6. Isih buntu? Cek vendor (composer install), versi PHP, extension, document root.
    7. Terakhir: copy error persis ke Google atawa AI chatbot, sertai versi Laravel + PHP.

    Tabel Troubleshooting: Gejala, Penyebab, Solusi

    Gejala Penyebab Umum Solusi Cepat
    Blank page putih tanpa pesan Permission storage salah / view compile gagal / APP_DEBUG=false nutup error Cek laravel.log, fix permission storage, set APP_DEBUG=true sementara
    500 Internal Server Error .env ilang, vendor gak lengkap, PHP version gak didukung Cek .env & APP_KEY, composer install, cek versi PHP
    419 Page Expired CSRF token expired / session gak writable / session driver salah Fix permission storage/framework/sessions, config:clear, restart PHP-FPM
    No application encryption key has been specified APP_KEY kosong / .env anyar tanpa key php artisan key:generate
    Class not found / Call to undefined function vendor gak lengkap / extension PHP ilang / autoload perlu dump composer install, composer dump-autoload, install extension
    SQLSTATE Connection refused Database server down / kredensial salah neng .env / DB_HOST salah Cek DB_HOST, DB_PORT, DB_DATABASE neng .env, pastikan MySQL aktif
    Website tampil tanpa CSS storage:link durung digawe / asset gak ke-kompile php artisan storage:link, pastikan public/build lan public/storage ana

    cara debug website laravel dengan membaca storage logs laravel.log di server hosting

    Pro Tips & Warnings dari Pengalaman Lapangan

    • Aja pernah biarkan APP_DEBUG=true neng production. Error detail Laravel nyertain file path, environment variable, config database, malah query — kabeh kebuka ke publik. Iku bahan empuk buat attacker. Kalau cuma buat tes, langsung balikin false setelah kelar.
    • Log iso gede banget. laravel.log sing wis minggu-minggu iso ratusan MB lan bikin disk penuh. Routine e: tail dhisik, kalau wis beres, truncate: truncate -s 0 storage/logs/laravel.log. Kalau disk e wis kepenuhan, cek artikel troubleshooting disk full iki.
    • Aja asal restart service production. Restart PHP-FPM pas jam sibuk iso ngedrop kabeh request sing lagi jalan. Cek dhisik uptime lan traffic e.
    • Bandingno sebelum & sesudah. Error setelah deploy? Cek file sing anyar diubah. Error setelah pindah server? Prioritas: .env, permission, cache. Alur iki sing nyepetno 90% kasus.
    • Tanya AI pake konteks lengkap. Iki clue gedhe: kalau wis ana error message lan output log, copy-paste persis ke ChatGPT/Claude/bot favorit, sertai versi Laravel, versi PHP, lan langkah sing wis dicoba. Hasil e jauh luwih akurat tinimbang nanya “website saya 500”. Konteks iku setengah soko jawaban.
    • Error e kaitane proxy atawa gateway? Cek artikel 502 Bad Gateway iki — banyak kasus Laravel sing malah ketangkap nang level nginx dhisik.

    Kapan Harus Eskalasi ke Developer

    Teknisi hosting wis bener-bener ngerti batas e. Kalau log e wis kebaca, permission bener, cache beres, .env oke, PHP version support — tapi error e tetep ana lan nunjuk ke logic aplikasi (SQL query error, exception sing aneh neng controller, dst), iku waktune nerusno ke developer. Siapno paket lengkap: error message, log 20 baris terakhir, versi Laravel + PHP, lan langkah sing wis sampeyan coba. Developer bakal luwih cepet ngerjain kalau dikasih bahan kayak ngono. Soko pengalaman, sebagian besar “Laravel error” sing ditelepon ke tim hosting sebenernya cuma permission, .env, atawa cache — cuma butuh 5-10 menit — sampeyan wis iso mandiri nangani sadurunge eskalasi.

    FAQ Seputar Debug Laravel

    Q: Kenapa website Laravel saya blank page putih, padahal status server normal?

    Blank page biasane karena error sing disimpen (APP_DEBUG=false) atawa view compile gagal gara-gara permission storage. Cara paling cepet: buka storage/logs/laravel.log, liat error terakhir. Kalau ana “Permission denied”, fix permission folder storage. Kalau log kosong, set APP_DEBUG=true sementara buat liat pesan error detail e.

    Q: Apa itu error 419 Page Expired di Laravel?

    419 adalah jawaban Laravel ketika token CSRF neng form gak cocok dengan session. Biasane karena session gak tersimpan (folder storage/framework/sessions gak writable), config cache lawas, atawa user keburu lama diem neng form. Fix e: perbaiki permission session, jalanin php artisan config:clear, terus restart PHP-FPM.

    Q: Beda nge-debug WordPress sama Laravel itu apa?

    WordPress error biasane langsung kelihatan neng browser atawa neng PHP error log sing siji folder. Laravel punya lapisan routing, middleware, controller, lan blade — error e iso muncul neng lapisan mana wae, dadi log e kudu dibaca soko file storage/logs/laravel.log. Tambahan, Laravel butuh .env, vendor (composer), lan folder storage sing writable — telu hal sing gak ana neng WordPress.

    Q: File .env saya gak ada. Apa sing kudu saya lakoni?

    Kalau .env ilang, Laravel gak tau APP_KEY, APP_DEBUG, lan konfigurasi database. Salin .env.example dadi .env, isi parameter kredensial database, terus generate key pake php artisan key:generate. Tanpa langkah iki, website bakal error terus meskipun file liyane lengkap.

    Q: Aman gak sih set APP_DEBUG=true buat cari error?

    Aman kalau cuma sementara lan langsung dimatikan. APP_DEBUG=true neng production mbukak path file, environment variable, lan kredensial database ke browser sapa wae. Gunakan buat tes, temokno error e, catat, terus balikin false lan clear cache biar perubahane kebaca.

    Author: Syslog Solutions — NOC & Server Management Team. We handle 500+ servers daily, from shared hosting to enterprise dedicated infrastructure.

    Sip, monggo dipraktekno step-step ndhuwur neng server sampeyan. Nek isih stuck, tuntut alur e: gejala, log, .env, permission, cache. Gak ketemu? Tinggal copy-paste error message e ke Google atawa AI chatbot, sertai versi Laravel lan PHP — sampeyan wis punya 80% bahan jawaban. Pernah ngalamin kasus Laravel sing bikin pusing? Drop neng komentar, sopo ngerti iso dadi pelajaran kanca-kanca liyane. Mugi bermanfaat, lan good luck!