Jam menunjukkan pukul 23.47. Saya baru saja deploy sebuah project ke server. Semuanya tampak beres — saya sudah test di lokal, sudah cek dua kali, sudah yakin tidak ada yang ketinggalan. Lalu saya buka browser, ketik alamat domain-nya, dan yang muncul adalah layar putih polos dengan tulisan sederhana:
500 Internal Server Error
Saya terdiam beberapa detik. Kemudian mulai panik.
Error yang Tidak Bicara
Yang membuat error 500 menyebalkan adalah sifatnya yang pelit informasi. Dia tidak bilang apa yang salah. Dia hanya bilang: ada yang salah. Itu saja. Seperti dokter yang cuma bilang "kamu sakit" tanpa mau bilang sakitnya apa.
Malam itu saya mulai dari yang paling dasar. Cek error log di server. Tapi waktu itu saya belum terlalu paham cara baca error log — isinya panjang, penuh tanggal dan jam, dan baris yang relevan entah ada di mana.
Saya coba aktifkan display_errors di PHP. Masih putih. Saya cek permission folder. Sepertinya oke. Saya cek file .htaccess. Tidak ada yang aneh. Satu jam berlalu dan saya masih di titik yang sama.
Penyebabnya Bodoh Sekali
Sekitar jam satu malam, setelah mata mulai perih dan kepala mulai berat, saya akhirnya menemukan masalahnya.
Saya lupa mengubah konfigurasi database. Di lokal saya pakai localhost, username root, password kosong. Di server tentu saja berbeda. Tapi saya lupa update file konfigurasi sebelum upload.
Satu baris kode. Satu baris yang saya lewatkan. Dan itu memakan waktu lebih dari satu jam malam-malam.
Rasanya? Campuran antara lega karena ketemu masalahnya, dan malu pada diri sendiri karena penyebabnya sesederhana itu.
Yang Saya Pelajari Malam Itu
Kalau saya bayar kursus dan ada instruktur yang bilang "jangan lupa update konfigurasi sebelum deploy", mungkin saya akan mengangguk lalu lupa dua hari kemudian. Tapi karena saya mengalaminya sendiri — merasakan paniknya, merasakan frustrasinya, merasakan rasa malu waktu ketemu penyebabnya — pelajaran itu tidak pernah saya lupakan sampai sekarang.
Sejak malam itu, saya punya kebiasaan baru sebelum deploy: buat checklist. Sederhana saja, tidak perlu panjang. Isinya hal-hal kecil yang sering terlupakan karena dianggap sudah otomatis.
Contoh checklist saya yang sekarang:
- Konfigurasi database sudah diganti ke production?
- Mode debug/display errors sudah dimatikan?
- File
.envtidak ikut terupload ke repository publik? - Permission folder storage/cache sudah benar?
- Sudah test di browser berbeda sebelum bilang selesai?
Kelihatannya sepele. Tapi sudah berkali-kali checklist ini menyelamatkan saya dari error tengah malam yang tidak perlu.
Error Itu Bukan Musuh
Ini yang lama saya pahami: error bukan tanda bahwa kamu bodoh. Error adalah bagian dari proses. Setiap programmer — dari yang baru belajar sampai yang sudah puluhan tahun — masih ketemu error. Yang membedakan adalah seberapa cepat mereka bisa membacanya dan menemukan penyebabnya.
Skill membaca error message itu bisa diasah. Dan satu-satunya cara mengasahnya adalah dengan sering ketemu error. Artinya, semakin banyak error yang kamu hadapi dan selesaikan sendiri, semakin tajam insting kamu dalam debugging.
Lha nek wedi karo error, yo kapan pintere. Begitu kira-kira kalau dalam bahasa Jawa.
Tips Sederhana Menghadapi Error 500
Untuk yang mungkin sedang menghadapi situasi serupa, ini urutan yang biasanya saya lakukan:
Pertama, cek error log server — biasanya ada di /var/log/apache2/error.log atau di panel hosting di bagian error logs. Di sinilah pesan error yang sebenarnya tersimpan.
Kedua, aktifkan error reporting sementara. Tambahkan di awal file PHP: ini_set('display_errors', 1); error_reporting(E_ALL); — tapi ingat, matikan lagi setelah beres.
Ketiga, cek permission. Folder seperti storage, cache, atau uploads biasanya butuh permission 755 atau 775.
Keempat — dan ini yang paling sering dilupakan — cek konfigurasi. Database, path file, base URL. Hal-hal yang berbeda antara environment lokal dan production.
Error 500 tengah malam itu sudah lama berlalu, tapi saya masih ingat detailnya dengan jelas. Karena pelajaran yang datang dari pengalaman nyata, apalagi yang datang disertai rasa panik dan mata mengantuk, selalu lebih awet dari pelajaran yang datang dari buku.
Kamu pernah punya pengalaman debugging yang bikin frustrasi tapi akhirnya jadi pelajaran berharga? Cerita di komentar — saya penasaran kasus error paling absurd yang pernah kamu hadapi.
Belum ada komentar. Jadilah yang pertama menulis.
Tulis Komentar