Studi Kasus Nyata: Dari Error 500 Hingga Website Online Stabil
Deploy aplikasi Laravel ke shared hosting berbasis cPanel sering dianggap sederhana. Banyak tutorial hanya menyebutkan langkah global: upload file, set .env, lalu selesai. Kenyataannya, deploy Laravel—terutama versi terbaru—menyimpan banyak jebakan kecil yang dapat memicu Internal Server Error (500) secara beruntun.
Artikel ini mendokumentasikan pengalaman nyata saat mendeploy aplikasi Laravel ke domain jurnal.my.id menggunakan shared hosting cPanel. Seluruh error, solusi, dan keputusan konfigurasi ditulis berdasarkan kejadian sebenarnya, sehingga dapat dijadikan panduan praktis untuk deploy Laravel berikutnya.
Gambaran Awal Lingkungan
Sebelum masuk ke troubleshooting, berikut kondisi awal sistem:
- Framework: Laravel 12
- PHP: 8.2
- Hosting: Shared hosting (cPanel)
- Database: MySQL
- Domain: jurnal.my.id
- Akses shell: tersedia (Terminal cPanel)
Project Laravel sudah lengkap, termasuk folder vendor, sehingga tidak perlu menjalankan composer install di server.
1. Kondisi Awal: Website Hanya Menampilkan Error 500
Setelah seluruh file Laravel di-upload dan domain diakses, yang muncul hanyalah:
Internal Server Error
Tanpa pesan tambahan, tanpa detail.
Pada tahap ini, jangan langsung menyimpulkan hosting bermasalah. Pada Laravel, error 500 sering kali menandakan:
- kesalahan environment,
- konfigurasi .env,
- permission folder atau akses database.
Langkah pertama adalah mendapatkan error aslinya.
2. Kesalahan Awal yang Umum: Artisan Tidak Bisa Dijalankan
Saat mencoba menjalankan perintah:
Muncul pesan:
Analisis
Error ini bukan error Laravel, melainkan kesalahan lokasi eksekusi perintah.
Perintah artisan harus dijalankan dari folder project Laravel, bukan dari home directory.
Solusi
Masuk ke folder project terlebih dahulu:
Pastikan file artisan terlihat:
Setelah itu, perintah artisan dapat dijalankan normal.
3. Error 500 Tetap Ada: Kesalahan Fatal pada APP_URL
Setelah APP_KEY berhasil dibuat, website masih error 500.
Pengecekan file .env menemukan kesalahan berikut:
Analisis
Ini adalah kesalahan fatal karena saya terburu-buru akhirnya typo. Laravel sangat sensitif terhadap APP_URL, karena digunakan oleh:
- URL generator
- session
- middleware
- asset resolution
Format http:https:// tidak valid.
Perbaikan
Untuk debugging sementara:
Langkah ini penting agar Laravel menampilkan error sebenarnya, bukan hanya error 500 kosong.
4. Error Database Pertama: SQLSTATE 1044 (Permission)
Setelah debug aktif, muncul error:
Makna Error 1044
- User MySQL ada
- Database ada
- Tapi user belum diberi hak akses ke database
Ini adalah kesalahan klasik di cPanel.
Solusi
Di cPanel → MySQL Databases:
- Tambahkan user ke database
- Berikan ALL PRIVILEGES
- Simpan perubahan
Tanpa langkah ini, Laravel tidak akan pernah bisa query database, meskipun credential terlihat benar.
5. Error Database Kedua: SQLSTATE 1045 (Autentikasi)
Setelah permission diperbaiki, muncul error lain:
Perbedaan 1044 vs 1045
| Kode | Arti |
|---|---|
| 1044 | User tidak punya hak akses |
| 1045 | Username / password salah atau cache lama |
Penyebab Umum
-
Password MySQL tidak sama dengan
.env -
Laravel masih menggunakan config cache lama
Solusi
- Reset password user MySQL di cPanel
- Update .env
- Hapus cache konfigurasi Laravel:
Atau hapus manual seluruh file di:
Langkah ini wajib. Tanpa clear cache, Laravel tetap memakai credential lama.
6. Database Masih Kosong: Migrasi Wajib Dilakukan
Setelah koneksi database berhasil, muncul error terkait tabel sessions.
Pemeriksaan menunjukkan:
-
Database masih kosong
-
Tidak ada tabel
migrations,users, dan lainnya
Kesimpulan Penting
Laravel tidak bisa berjalan normal tanpa migration, meskipun koneksi database sudah benar.
7. Migrasi Database: Titik Balik Utama
Perintah dijalankan:
Output:
Arti Output Ini
- Koneksi database sukses
- Permission MySQL benar
- Struktur database siap
- Backend Laravel sudah sehat
Ini adalah titik balik utama dari seluruh proses deploy.
8. Penyesuaian Laravel 12: Session, Cache, dan Queue
Pada Laravel 12:
-
CACHE_DRIVERsudah tidak digunakan -
Digantikan oleh
CACHE_STORE
Konfigurasi awal menggunakan database:
Namun pada shared hosting:
-
Session database tidak selalu stabil
-
Queue database memerlukan worker (yang tidak tersedia)
Keputusan Konfigurasi Produksi
Dipilih konfigurasi paling aman:
Setelah perubahan:
9. Website Online dan Stabil
Setelah seluruh langkah dilakukan secara berurutan:
- Website tampil normal
- Tidak ada error 500
- Database berfungsi
- Session berjalan stabil
Perintah seperti:
tidak dijalankan, karena:
- Session sudah berbasis file
- Tidak diperlukan tabel sessions
- Menghindari kompleksitas yang tidak perlu
Checklist Deploy Laravel ke Shared Hosting (Ringkasan)
Checklist ini bisa dijadikan acuan deploy berikutnya:
- Upload project Laravel lengkap
- Pastikan eksekusi artisan di folder yang benar
- Periksa format APP_URL
- Aktifkan debug sementara
- Assign user MySQL ke database
- Reset password MySQL jika perlu
- Clear config cache Laravel
- Jalankan php artisan migrate
- Gunakan file-based session & cache
- Matikan debug untuk produksi
Penutup
Pengalaman ini menunjukkan bahwa deploy Laravel bukan soal “sekali klik”, melainkan soal urutan, pemahaman, dan kesabaran. Hampir semua error yang muncul bukan karena Laravel bermasalah, melainkan karena detail kecil yang terlewat.
Dengan dokumentasi ini, proses deploy Laravel berikutnya dapat dilakukan:
-
lebih cepat,
-
lebih tenang,
-
dan minim trial-error.