Menampilkan pesan error di PHP penting untuk menemukan bug dengan cepat. Ada beberapa cara yang bisa dipilih, mulai dari pengaturan bawaan hingga ekstensi khusus. Tujuh metode berikut dibandingkan berdasarkan kemudahan, kelengkapan informasi, dan kesesuaian untuk tahap pengembangan atau produksi.
1. Mengaktifkan display_errors di php.ini
Pengaturan display_errors di file php.ini adalah cara paling dasar untuk menampilkan error. Ketika diaktifkan, PHP mencetak pesan error langsung ke output halaman. Nilai yang umum dipakai adalah On untuk pengembangan dan Off untuk produksi.
Kelebihannya sederhana dan berlaku global. Kamu perlu mengubah konfigurasi server dan melakukan restart. Metode ini cocok jika kamu ingin semua error langsung terlihat tanpa menulis kode tambahan.
2. Menggunakan error_reporting() untuk Mengatur Level Error
Fungsi error_reporting() memungkinkan kamu menentukan jenis error apa saja yang dilaporkan. Misalnya, error_reporting(E_ALL) menampilkan semua error, termasuk notice dan warning. Panggil fungsi ini di awal skrip, biasanya di file konfigurasi atau bootstrap.
Kombinasi dengan ini_set('display_errors', 1) membuat pengaturan berlaku saat runtime tanpa mengubah php.ini. Ini berguna untuk lingkungan pengembangan lokal yang mungkin memiliki konfigurasi berbeda.
3. Menulis Pesan Error ke Log File
Menyimpan error ke file log adalah praktik yang disarankan untuk produksi. Atur log_errors = On dan tentukan error_log ke path yang bisa ditulis. PHP akan menulis pesan error ke file tersebut, bukan ke halaman.
Pengguna tidak melihat detail sensitif dan kamu tetap punya catatan untuk investigasi. Pastikan file log diamankan dan dirotasi secara berkala agar tidak membengkak. Untuk proyek yang lebih besar, pertimbangkan menggunakan logger seperti Monolog.
4. Custom Error Handler dengan set_error_handler()
Fungsi set_error_handler() memungkinkan kamu menentukan fungsi sendiri untuk menangani error. Kamu bisa memformat pesan, mengirim notifikasi, atau menyimpan ke database. Ini memberi fleksibilitas lebih dari sekadar menampilkan pesan bawaan.
Contoh penggunaannya:
function myErrorHandler($errno, $errstr, $errfile, $errline) {
echo "Error: [$errno] $errstr di $errfile baris $errline";
}
set_error_handler("myErrorHandler");
Handler ini tidak menangani fatal error atau parse error. Untuk itu, kamu perlu register_shutdown_function() atau alat lain.
5. Menampilkan Error dengan trigger_error()
trigger_error() digunakan untuk memicu error secara manual. Biasanya dipakai untuk validasi atau kondisi yang tidak terduga. Kamu bisa menentukan level error seperti E_USER_WARNING atau E_USER_ERROR.
Metode ini berguna ketika kamu ingin memberikan pesan khusus pada situasi tertentu, misalnya parameter tidak valid. Jangan menggunakannya untuk hal yang bisa ditangani dengan exception.
6. Menggunakan Exception dan Menangkapnya
Sejak PHP 7, error fatal dan beberapa error lainnya dilempar sebagai objek Error yang bisa ditangkap dengan try...catch. Untuk error yang kamu lempar sendiri, gunakan throw new Exception().
Dengan exception, kamu bisa mengelompokkan penanganan error dan menampilkan pesan yang lebih terstruktur. Contoh:
try {
// kode yang mungkin error
throw new Exception("Terjadi kesalahan");
} catch (Exception $e) {
echo "Pesan: " . $e->getMessage();
}
Jangan menangkap exception hanya untuk mengabaikannya. Tangani dengan tepat atau log pesannya.
7. Xdebug untuk Debugging Lebih Mendalam
Xdebug adalah ekstensi PHP yang menyediakan fitur debugging interaktif, termasuk stack trace yang lebih kaya dan tampilan error yang lebih informatif. Dengan Xdebug, pesan error akan menampilkan variabel, parameter, dan alur pemanggilan fungsi.
Instalasi Xdebug memerlukan penyesuaian konfigurasi dan integrasi dengan IDE. Metode ini sangat berguna untuk pengembangan kompleks, tetapi mungkin berlebihan untuk proyek kecil. Jika kamu baru memulai, pertimbangkan untuk memilih editor PHP yang mendukung Xdebug.
Perbandingan Singkat
| Metode | Kemudahan | Kelengkapan | Cocok untuk |
|---|---|---|---|
| display_errors | Mudah | Dasar | Pengembangan awal |
| error_reporting() | Mudah | Dasar | Pengembangan |
| Log file | Sedang | Lengkap | Produksi |
| set_error_handler() | Sedang | Kustom | Kebutuhan khusus |
| trigger_error() | Mudah | Terbatas | Validasi manual |
| Exception | Sedang | Terstruktur | Semua tahap |
| Xdebug | Sulit | Sangat lengkap | Debugging kompleks |
Dalam praktiknya, kamu bisa menggabungkan beberapa metode. Misalnya, gunakan log file untuk produksi dan Xdebug untuk pengembangan. Baca juga panduan menghindari SQL injection di PHP untuk memastikan keamanan kodemu.
Ringkasan
Menampilkan pesan error di PHP bisa dilakukan dengan berbagai cara, dari pengaturan sederhana hingga alat debugging canggih. Pilih metode yang sesuai dengan tahap proyek dan kebutuhan tim. Selalu prioritaskan keamanan dengan tidak menampilkan detail error ke pengguna di lingkungan produksi.
Pertanyaan yang Sering Diajukan
Bagaimana cara menampilkan error di PHP tanpa mengubah php.ini?
Gunakan ini_set('display_errors', 1) dan error_reporting(E_ALL) di awal skrip. Ini akan mengaktifkan tampilan error saat runtime.
Apa perbedaan antara error dan exception di PHP?
Error biasanya disebabkan oleh masalah internal seperti sintaks atau tipe data, sedangkan exception dilempar secara manual atau oleh fungsi tertentu dan dapat ditangkap dengan try...catch.
Apakah aman menampilkan error di server produksi?
Tidak. Menampilkan detail error dapat membocorkan informasi sensitif. Sebaiknya log error ke file dan tampilkan pesan umum ke pengguna.