Latest web development tutorials
×

PHP kuliah

PHP kuliah PHP pengantar singkat PHP memasang PHP tatabahasa PHP variabel PHP echo/print PHP Jenis Data PHP konstan PHP tali PHP operator PHP If...Else PHP Switch PHP susunan PHP Sorting array PHP superglobals PHP While sirkulasi PHP For sirkulasi PHP fungsi PHP Variabel sihir PHP Ruang nama PHP Berorientasi Objek

PHP bentuk

PHP bentuk PHP bentuk Authentication PHP bentuk - bidang yang harus diisi PHP bentuk - email verifikasi dan URL PHP contoh bentuk lengkap PHP $_GET variabel PHP $_POST variabel

PHP canggih Tutorial

PHP Array multidimensi PHP tanggal PHP berisi PHP berkas PHP Upload File PHP Cookie PHP Session PHP E-mail PHP keamanan E-mail PHP Error PHP Exception PHP filter PHP filter lanjutan PHP JSON

PHP 7 Fitur baru

PHP 7 Fitur baru

PHP database

PHP MySQL pengantar singkat PHP MySQL koneksi PHP MySQL Membuat database PHP MySQL Buat tabel data PHP MySQL memasukkan data PHP MySQL Menyisipkan beberapa data yang PHP MySQL Laporan disiapkan PHP MySQL membaca data PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX pengantar singkat AJAX PHP AJAX database AJAX XML AJAX pencarian real-time AJAX RSS Reader AJAX suara

PHP Reference manual

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP image Processing PHP RESTful

PHP Penanganan Kesalahan

Dalam PHP, default error handling sangat sederhana. Pesan kesalahan dikirim ke browser, pesan dengan nama file, nomor baris dan deskripsi pesan kesalahan.


PHP Penanganan Kesalahan

Ketika membuat script dan aplikasi Web, penanganan kesalahan adalah bagian penting. Jika kode Anda tidak memiliki kesalahan kode pengecekan, program anda mungkin terlihat sangat tidak profesional, tetapi juga membuka pintu untuk risiko keamanan.

Tutorial ini memperkenalkan beberapa yang paling penting dalam PHP metode deteksi kesalahan.

Kami akan menjelaskan metode penanganan kesalahan Anda yang berbeda:

  • Sederhana "die ()" Pernyataan
  • kesalahan kustom dan pemicu kesalahan
  • error Reporting

Dasar Penanganan Kesalahan: Menggunakan die () fungsi

Contoh pertama menunjukkan sebuah script sederhana yang membuka file teks:

<?php
$file=fopen("welcome.txt","r");
?>

Jika file tidak ada, Anda akan mendapatkan error seperti ini:

Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in /www/w3big/test/test.php on line 2

Untuk mencegah pengguna mendapatkan pesan kesalahan mirip dengan di atas, kami memeriksa file sebelum mengakses file ada:

<?php
if(!file_exists("welcome.txt"))
{
	die("文件不存在");
}
else
{
	$file=fopen("welcome.txt","r");
}
?>

Sekarang, jika file tidak ada, Anda akan mendapatkan pesan kesalahan ini mirip dengan:

文件不存在

Dibandingkan dengan kode sebelumnya, kode di atas adalah lebih efisien, karena menggunakan mekanisme penanganan kesalahan sederhana untuk mengakhiri script setelah kesalahan.

Namun, hanya mengakhiri script tidak selalu dengan cara yang benar. Mari kita lihat fungsi PHP alternatif untuk menangani kesalahan.


Membuat Kesalahan Handler Kustom

Buat handler kesalahan kustom cukup sederhana. Kami hanya membuat fungsi khusus yang dapat dipanggil ketika terjadi kesalahan dalam PHP.

Fungsi ini harus mampu menangani setidaknya dua parameter (tingkat kesalahan dan pesan kesalahan), tetapi dapat menerima hingga lima parameter (opsional: berkas, garis-jumlah dan konteks error):

tatabahasa

error_function(error_level,error_message,
error_file,error_line,error_context)
parameter deskripsi
error_level Diperlukan. Kesalahan didefinisikan sebagai tingkat pelaporan kesalahan yang ditetapkan pengguna. Ini harus berupa angka. Lihat tabel berikut: Kesalahan tingkat pelaporan.
ERROR_MESSAGE Diperlukan. error pesan kesalahan pengguna-didefinisikan menyatakan.
error_file Opsional. terjadi nama file error ditentukan.
error_line Opsional. Yang telah ditentukan nomor baris kesalahan terjadi.
error_context Opsional. Menentukan array yang berisi setiap variabel bila terjadi kesalahan dalam penggunaan dan nilai-nilai mereka.

tingkat pelaporan kesalahan

tingkat laporan kesalahan ini adalah jenis kesalahan Kesalahan Handler pengolahan kustom:

常量 描述
2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。
8 E_NOTICE run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。
256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())
8191 E_ALL 所有错误和警告。(在 PHP 5.4 中,E_STRICT 成为 E_ALL 的一部分)

Sekarang, mari kita membuat fungsi untuk menangani error:

function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "脚本结束";
	die();
}

Kode di atas adalah fungsi penanganan kesalahan sederhana. Ketika dipicu, maka akan mendapatkan tingkat error dan pesan kesalahan. Kemudian output tingkat kesalahan dan pesan dan berakhir script.

Sekarang, kami telah menciptakan fungsi penanganan error, kita perlu menentukan kapan untuk memicu fungsi.


Pengaturan handler error

default kesalahan handler PHP adalah built-in error handler. Kita akan mengubah fungsi di atas durasi handler error default script.

Anda dapat memodifikasi handler kesalahan sehingga hanya diterapkan untuk beberapa error, sehingga script dapat cara yang berbeda untuk menangani kesalahan yang berbeda. Namun, dalam kasus ini, kami berniat untuk menggunakan untuk semua kesalahan Kesalahan Handler kebiasaan kami:

set_error_handler("customError");

Karena kita ingin fungsi kustom kami untuk menangani semua kesalahan, set_error_handler () hanya dibutuhkan satu parameter, Anda dapat menambahkan argumen kedua untuk menentukan tingkat kesalahan.

contoh

Dengan mencoba untuk variabel output yang tidak ada, untuk menguji handler error:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr";
}

// 设置错误处理函数
set_error_handler("customError");

// 触发错误
echo($test);
?>

Output dari kode di atas adalah sebagai berikut:

Error: [8] Undefined variable: test


pemicu Kesalahan

Dalam script pengguna lokasi input data ketika masukan pengguna tidak dipicu ketika kesalahan berguna. Dalam PHP, hal ini dilakukan oleh fungsi trigger_error () untuk menyelesaikan.

contoh

Dalam contoh ini, jika "test" variabel lebih besar dari "1", kesalahan terjadi:

<?php
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1");
}
?>

Output dari kode di atas adalah sebagai berikut:

Notice: 变量值必须小于等于 1
in /www/test/w3big.php on line 5

Anda dapat memicu kesalahan dalam script mana saja, dengan menambahkan parameter kedua, Anda dapat menentukan tingkat kesalahan dipicu.

Kemungkinan jenis kesalahan:

  • E_USER_ERROR - Fatal user-generated run-time error. kesalahan tidak terpulihkan. eksekusi script terganggu.
  • E_USER_WARNING - Non-fatal yang dibuat pengguna run-time peringatan. eksekusi script tidak terganggu.
  • E_USER_NOTICE - default. run-time pemberitahuan pengguna yang dihasilkan. Ketika script menemukan kesalahan mungkin terjadi, tetapi juga dapat terjadi dalam naskah operasi normal.

contoh

Dalam contoh ini, jika "test" variabel lebih besar dari "1", E_USER_WARNING kesalahan terjadi. Jika ini terjadi E_USER_WARNING, kita akan menggunakan penangan error kebiasaan kami dan mengakhiri script:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "脚本结束";
	die();
}

// 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);

// 触发错误
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

Output dari kode di atas adalah sebagai berikut:

Error: [512] 变量值必须小于等于 1
脚本结束

Sekarang kita telah belajar bagaimana untuk membuat kesalahan Anda sendiri, dan bagaimana memicu mereka, mari kita lihat di error log.


error Log

Dalam kasus default, sesuai dengan konfigurasi error_log diatur di php.ini, PHP mengirimkan sistem pencatatan kesalahan untuk merekam atau file server. Dengan menggunakan error_log () berfungsi Anda dapat mengirim error log ke file atau tujuan remote ditentukan.

Ini mengirimkan pesan kesalahan kepada diri sendiri melalui e-mail adalah cara yang baik untuk mendapatkan diberitahu kesalahan tertentu.

pesan kesalahan dikirim oleh E-Mail

Dalam contoh berikut, jika kesalahan tertentu terjadi, kami akan mengirimkan e-mail dengan pesan kesalahan dan mengakhiri script:

<?php
// 错误处理函数
function customError($errno, $errstr)
{
	echo "<b>Error:</b> [$errno] $errstr<br>";
	echo "已通知网站管理员";
	error_log("Error: [$errno] $errstr",1,
	"[email protected]","From: [email protected]");
}

// 设置错误处理函数
set_error_handler("customError",E_USER_WARNING);

// 触发错误
$test=2;
if ($test>1)
{
	trigger_error("变量值必须小于等于 1",E_USER_WARNING);
}
?>

Output dari kode di atas adalah sebagai berikut:

Error: [512] 变量值必须小于等于 1
已通知网站管理员

Pesan yang diterima dari kode di atas adalah sebagai berikut:

Error: [512] 变量值必须小于等于 1

Metode ini tidak cocok untuk semua kesalahan. kesalahan konvensional harus dengan menggunakan sistem logging PHP default untuk merekam pada server.