Cara menggunakan log kesalahan php

Simak Tips Hosting di halaman tutorial Jagoan Hosting Indonesia, jika ada bagian tutorial yang tidak ditemukan, bisa menghubungi teman-teman di Jagoan Hosting agar bisa dibantu lebih lanjut melalui fitur Live Chat atau Open Ticket

when using error_log to send email, not all elements of an extra_headers string are handled the same way.  "From: " and "Reply-To: " header values will replace the default header values. "Subject: " header values won't: they are *added* to the mail header but don't replace the default, leading to mail messages with two Subject fields.

error_log("sometext", 1, "zigzag@my.domain",
  "Subject: Foo\nFrom: Rizzlas@my.domain\n");

?>

---------------%<-----------------------
To: zigzag@my.domain
Envelope-to: zigzag@my.domain
Date: Fri, 28 Mar 2003 13:29:02 -0500
From: Rizzlas@my.domain
Subject: PHP error_log message
Subject: Foo
Delivery-date: Fri, 28 Mar 2003 13:29:03 -0500

sometext
---------------%<---------------------

quoth the docs: "This message type uses the same internal function as mail() does."

mail() will also fail to set a Subject field based on extra_header data - instead it takes a seperate argument to specify a "Subject: " string.

php v.4.2.3, SunOS 5.8

Demikian cara mengaktifkan error log di website Anda, namun berikut sedikit penjelasan tentang error log. File error log berguna untuk mencatat semua error yang terjadi saat website diakses, ini juga berguna bagi pemilik website untuk men-debug halaman web mereka. Untuk itu, ikuti saja langkah-langkah berikut ini

PENTING. pastikan file. htaccess dicadangkan terlebih dahulu sebelum diubah

  1. masuk ke folder situs web kami (mis. public_html > …. >. htaccess)
  2. Jika tidak terlihat, pastikan pengaturan sudah menampilkan file tersembunyi. "Jika file tersembunyi telah muncul tetapi file. htaccess tidak ada, silahkan buat secara manual
  3. buka file. htaccess dan masukkan kode di bawah ini

# catat kesalahan PHP ke file
php_flag log_errors aktif
php_value error_reporting 32767
php_value error_log “error_log. txt"
#END dari log PHP

silahkan simpan dan coba refresh website, jika ada error maka file error_log. txt akan muncul di folder website kita. Demikian cara mengaktifkan error log pada website, semoga bermanfaat. Semoga berhasil 🙂

Munculnya error pada saat pengembangan aplikasi merupakan hal yang tidak bisa dihindari. Itu pasti akan terjadi. Bahkan ketika aplikasi/web yang kita kerjakan sudah rilis, error tetap menjadi santapan kita sehari-hari. Itu pasti dan harus muncul

Setiap kesalahan yang muncul, harus ditangani dengan akurat. Baik saat aplikasi masih dalam pengembangan, apalagi saat aplikasi sudah dirilis ke publik

Standar penanganan kesalahan adalah

  1. Menampilkan pesan permintaan maaf kepada pengguna karena terjadi kesalahan
  2. Simpan atau tulis log kesalahan agar kami dapat memperbaikinya dengan mudah
  3. Mengirim notifikasi secara real-time ke programmer sehingga error dapat segera ditangani

Jenis Error pada PHP

Di PHP, ada beberapa jenis dan tingkat kesalahan. Ada yang error sangat fatal sehingga program tidak bisa dilanjutkan, dan ada pula yang hanya berupa peringatan agar program tetap bisa dilanjutkan

Berikut adalah beberapa tingkatan dan jenis error yang harus diketahui dalam PHP

KonstantaDeskripsiLevelE_ERROR Fatal error yang terjadi saat program dijalankan. Eksekusi skrip akan segera dihentikan 1E_WARNINGError non-fatal yang terjadi saat run-time. Skrip (setelah terjadi kesalahan) masih dieksekusi 2E_PARSEError yang terjadi pada waktu kompilasi. Kesalahan penguraian ini terjadi ketika juru bahasa PHP mendeteksi kesalahan sintaks. 4E_NOTICE Pemberitahuan kemungkinan kesalahan saat run-time. Baris program mungkin normal, tetapi mungkin merupakan kesalahan dalam keadaan tertentu. 8E_USER_ERROR Fatal error yang terjadi saat program dijalankan. Mirip dengan E_ERROR hanya jenis kesalahan ini dipicu oleh programmer dengan memanggil fungsi ________0______3256E_USER_WARNINGError non-fatal yang terjadi saat run-time. Mirip dengan E_WARNING hanya jenis kesalahan ini dipicu oleh pemrogram dengan memanggil fungsi <?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; } 3512E_USER_NOTICEPemberitahuan tentang kemungkinan kesalahan saat dijalankan. Mirip dengan E_NOTICE hanya kesalahan jenis ini dipicu oleh programmer dengan memanggil fungsi <?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; } 31024

Untuk tingkat kesalahan yang lebih lengkap, silakan merujuk ke dokumentasi manual PHP

Cara Menangani Kesalahan

Setiap kali kita menulis kode program, kita harus selalu memeriksa setiap kesalahan yang mungkin terjadi. Sehingga jika memang terjadi kesalahan pada tempat tersebut, kami dapat memberikan tindakan yang tepat

Diantara metode penanganan error yang bisa kita lakukan adalah

  1. Menggunakan fungsi <?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; } 6
  2. Pusatkan penanganan kesalahan pada fungsi tertentu
  3. Menggunakan pengecualian

Menggunakan Fungsi <?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; } 6

Misalkan kita akan membuka dan membaca sebuah file dengan PHP, kita harus mengecek terlebih dahulu apakah file tersebut tersedia atau tidak. Jika ternyata file tersebut tidak tersedia, kita dapat menghentikan program runtime dengan memanggil fungsi <?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; } 6

Perhatikan kode program berikut

<?php $namaFile = "/web/documents/histori.txt"; if (!file_exists($namaFile)) { die("File tidak ditemukan"); } else { $file = fopen($namaFile, "r"); echo "File berhasil dibaca."; } // lanjutkan kode jika file berhasil dibaca _

Penanganan Kesalahan Terpusat

Selain menggunakan <?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; } _9 seperti di atas, kita bisa melakukan cara yang lebih umum, yaitu dengan memusatkan penanganan error pada satu fungsi saja

Sehingga setiap kali ada kesalahan dari setiap level, fungsi tersebut akan dipanggil secara otomatis. Setelah itu, kita dapat memutuskan apa yang akan kita lakukan dengan kesalahan yang terjadi

Langkah-langkahnya adalah

1. Buat fungsi

Langkah pertama adalah membuat fungsi khusus untuk menangani error

Fungsi harus memiliki 5 parameter

  • $errLevel. berisi konstanta seperti tingkat kesalahan
  • $errMessage. berisi label/pesan dari kesalahan
  • $errFile. berisi file tempat kesalahan terjadi
  • $errLine. berisi baris tempat kesalahan terjadi

Sebelum itu, jangan lupa untuk menonaktifkan semua pesan kesalahan. Karena beberapa pengaturan PHP bawaan di sistem operasi tertentu, pesan kesalahan akan ditampilkan secara default. Jadi kita harus mengaturnya secara mandiri dengan mengubah nilai pada file <?php set_error_handler('tanganiError'); 0 atau dengan memanggil fungsi <?php set_error_handler('tanganiError'); 1

<?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; }

2. Tetapkan fungsi sebagai penangan kesalahan

Kami telah membuat fungsi <?php set_error_handler('tanganiError'); _2. Fungsi menerima 5 parameter

Yang harus kita lakukan selanjutnya adalah mengatur fungsi sebagai penangan kesalahan. Sehingga jika terjadi kesalahan pada saat run-time, fungsi tersebut akan dijalankan

Untuk menyiapkan penangan kesalahan, kita dapat memanggil fungsi PHP bawaan yang disebut <?php set_error_handler('tanganiError'); 3

<?php set_error_handler('tanganiError'); _

3. Kesalahan pengujian

Kami mencoba memicu kesalahan dengan memanggil variabel yang belum pernah kami tentukan sebelumnya

<?php # variabel $tes tidak ada echo $tes;

Setelah program dijalankan, berikut adalah output yang saya dapatkan

Menggunakan Fungsi Shutdown

Cara di atas sekilas memang bekerja, tetapi tidak bekerja untuk semua jenis kesalahan

Kami telah mencoba memanggil variabel yang belum pernah kami definisikan sebelumnya

Namun, jika kita memanggil fungsi yang belum pernah didefinisikan, tingkat kesalahan yang dihasilkan adalah. <?php set_error_handler('tanganiError'); _4. Dan level ini tidak didukung oleh <?php set_error_handler('tanganiError'); 3. Sampai fungsi <?php set_error_handler('tanganiError'); _2 tidak pernah dipanggil

Coba kode program berikut

<?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi();

Dan setelah dieksekusi, fungsi <?php set_error_handler('tanganiError'); _2 yang sudah kita set sebagai error handler ternyata tidak dipanggil. Berikut screenshot dari apa yang saya dapatkan

Lalu bagaimana melakukannya?

Agar kami dapat menangani tingkat kesalahan <?php set_error_handler('tanganiError'); _4, kami memiliki opsi untuk menggunakan fungsi shutdown

Fungsi shutdown adalah fungsi yang akan dipanggil setelah program PHP selesai. Saya tidak tahu apakah ada kesalahan <?php set_error_handler('tanganiError'); 4 atau tidak

Daftarkan fungsi anonim sebagai fungsi shutdown

Berikut adalah contoh untuk mendaftarkan fungsi anonim sebagai fungsi shutdown. Fungsi ini akan mengambil error terakhir yang terjadi saat run-time, kemudian akan memanggil fungsi <?php set_error_handler('tanganiError'); 2 jika terjadi error

<?php register_shutdown_function(function () { if (error_get_last()) { # ambil error terakhir $error = (object) error_get_last(); tanganiError( $error->type, $error->message, $error->file, $error->line ); } });

Coba panggil fungsi <?php # variabel $tes tidak ada echo $tes; _1 lagi

<?php # fungsi selamatPagi() tidak pernah didefinisikan selamatPagi();

Hasil

Sembunyikan Semua Keluaran Saat Terjadi Kesalahan

Kami telah berhasil menangani kesalahan <?php set_error_handler('tanganiError'); _4 menggunakan fungsi shutdown. Namun, jika kita perhatikan, keluaran apa pun sebelum kesalahan terjadi akan tetap ditampilkan

Perhatikan kode program berikut

<?php echo "<h1>Selamat Datang</h1>"; echo "<h2>Ini adalah halaman utama</h2>"; # fungsi selamatPagi() tidak pernah didefinisikan selamatPagi(); echo "<p>Semoga bermanfaat</p>";

Kode program di atas akan menghasilkan keluaran sebagai berikut

Menggunakan fungsi <?php # variabel $tes tidak ada echo $tes; 3 dan <?php # variabel $tes tidak ada echo $tes; 4

Fungsi <?php # variabel $tes tidak ada echo $tes; _3 akan menyimpan semua output dalam buffer internal PHP. Sehingga keluarannya tidak langsung ditampilkan di browser tetapi akan ditampilkan terakhir sebelum program PHP dijalankan

Tambahkan fungsi <?php # variabel $tes tidak ada echo $tes; 3 sebelum output pertama, dan panggil fungsi <?php # variabel $tes tidak ada echo $tes; 4 setelah output terakhir

<?php ob_start(); echo "<h1>Selamat Datang</h1>"; echo "<h2>Ini adalah halaman utama</h2>"; # fungsi selamatPagi() tidak pernah didefinisikan selamatPagi(); ob_end_flush();

Panggil fungsi <?php # variabel $tes tidak ada echo $tes; _8 untuk menghapus output

Setelah itu, kita dapat memanggil fungsi <?php # variabel $tes tidak ada echo $tes; _8 untuk menghapus semua output yang disimpan di buffer internal. Dalam arti outputnya tidak ditampilkan

Kami memanggil fungsi ketika terjadi kesalahan

<?php register_shutdown_function(function () { if (error_get_last()) { # ambil error terakhir $error = (object) error_get_last(); # hapus semua output sebelum terjadi error ob_end_clean(); tanganiError( $error->type, $error->message, $error->file, $error->line ); } });

Saat kita menjalankan program lagi, kita akan menemukan semua output sebelum error terjadi, tidak ditampilkan

Menangani Kesalahan Sintaks

Selama ini kita sudah berhasil mengatasi berbagai jenis error, bahkan error fatal

Namun, kode program yang telah kita buat di atas tidak dapat menangani kesalahan sintaks. Misalkan kita menghapus titik koma (<?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); 0), program kita akan error dan fungsi penanganan error yang telah kita buat tidak akan pernah dipanggil meskipun kita telah membuat fungsi shutdown

Lalu, bagaimana cara mengatasi error <?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); _1 alias syntax error?

Caranya sama, yang perlu kita ketahui adalah

  1. Seharusnya tidak ada kesalahan dalam penanganan kesalahan
  2. File utama yang dijalankan tidak boleh memiliki kesalahan
  3. Kesalahan sintaks harus ada di file sekunder (selain file utama)

Langsung saja kita praktekkan, kita akan memecah kode program yang sudah kita buat tadi menjadi 3 file sebagai berikut

<?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; } 0

Penjelasan

  1. File <?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); _2 adalah file utama, artinya file tersebut adalah file yang kita request (melalui browser)
  2. Semua penanganan kesalahan kami ada di file <?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); 3
  3. Kami meletakkan file yang berisi kesalahan sintaksis (atau kesalahan lainnya) pada <?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); 4

Ini adalah kode file program <?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); 2

<?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; } _1

Nah, ketika terjadi kesalahan sintaks pada <?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); 4, PHP masih dapat menjalankan file utama yaitu <?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); 2 dan fungsi shutdown yang telah kita tentukan pada file <?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); 3 dapat dijalankan

<?php # sembunyikan semua pesan error bawaan PHP error_reporting(0); /** * Fungsi untuk menangai error. * * Fungsi ini wajib memiliki 4 paramter dan nama parameter bisa bebas. */ function tanganiError ($level, $message, $file, $line) { echo "<div style='padding: 2rem; background: rgba(200, 0, 0, 0.5); color: white'>"; echo "<b>Terjadi Error</b>"; echo "<p>[{$level}] {$message} - {$file}:{$line}</p>"; echo "</div>"; } _2

Kode Program Lengkap

Anda dapat mengakses kode program lengkap untuk pertemuan ini di sini

Kesimpulan

Di PHP ada berbagai jenis tingkat kesalahan. Mulai dari fatal hingga menghentikan program. Beberapa tidak mencapai level tersebut sehingga program masih memungkinkan untuk dilanjutkan

Untuk mengatasi error pada PHP, ada berbagai pendekatan. Dalam pertemuan di atas kami telah menggunakan setidaknya 2 pendekatan inti

  • Menggunakan <?php # fungsi selamatPagi() tidak pernah kita definisikan selamatPagi(); _9
  • Dan Menggunakan <?php register_shutdown_function(function () { if (error_get_last()) { # ambil error terakhir $error = (object) error_get_last(); tanganiError( $error->type, $error->message, $error->file, $error->line ); } }); 0

Tidak hanya itu, kami juga berhasil menyembunyikan semua keluaran yang di-echo sebelum kesalahan terjadi menggunakan fungsi <?php # variabel $tes tidak ada echo $tes; 3 dan <?php # variabel $tes tidak ada echo $tes; 8

Diskusi lebih lanjut

Pada pembahasan berikutnya insya Allah masih akan dibahas penanganan error. Namun, menggunakan cara yang lebih modern adalah Pengecualian. Metode ini merupakan fitur baru di PHP 5, dan pendekatan ini juga mirip dengan bahasa pemrograman modern lainnya

Postingan terbaru

LIHAT SEMUA