وباکا

آموزش تخصصی برنامه نویسی وب

در گام قبلی با روش های مدیریت خطاها در پی اچ پی آشنا شدید در این قسمت مباحث تکمیلی پردازش خطا را خواهیم داشت.

راه اندازی (تریگر) خطا

در یک اسکریپت پی اچ پی که کاربران می توانند داده هایی را وارد کنند، زمانی که یک ورودی غیر قانونی وارد می دهد، مفید خواهد بود تا باعث وقوع خطا شود.

در PHP این کار با تابع trigger_error انجام می شود.

مثال – در این مثال اگر متغیر “test” بزرگتر از “1” باشد خطایی رخ می دهد:

<?php
$test=2;
if ($test>=1) {
trigger_error("Value must be 1 or below");
}
?>

خروجی کد بالا باید چیزی شبیه به این باشد:

Notice: Value must be 1 or below
in C:\webfolder\test.php on line 6

یک خطا در هر اسکریپتی می تواند ایجاد شود و با اضافه کردن یک پارامتر دیگر می توانید مشخص کنید کدام سطح خطا باعث می شود.

انواع خطاهایی که می توان ایجاد کرد:

E_USER_ERROR – خطای مهلت حین اجرا که  توسط کاربر ایجاد شده است. خطاهایی که قابل برگشت نیست و اجرای اسکریپت متوقف می شود.
E_USER_WARNING – هشدار غیرقطعی حین اجرا که ایجاد شده توسط کاربر. اجرای اسکریپت متوقف نشده است.
E_USER_NOTICE – پیش فرض. اطلاعیه حین اجرا توسط کاربر. اسکریپت چیزی را پیدا کرده که ممکن است خطایی باشد، اما می تواند هنگام اجرای یک اسکریپت به طور معمول رخ دهد.

مثال:

در این مثال، اگر متغیر “test” بزرگتر از “1” باشد، E_USER_WARNING رخ می دهد. اگر یک E_USER_WARNING اتفاق بیفتد ما از پردازنده خطای سفارشی خودمان استفاده کرده و اسکریپت را پایان خواهیم داد:

<?php
//error handler function
function customError($errno, $errstr) {
echo "<b>Error:</b> [$errno] $errstr<br>";
echo "Ending Script";
die();
}
//set error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
$test=2;
if ($test>=1) {
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>

خروجی کد بالا باید چیزی شبیه به این باشد:

Error: [512] Value must be 1 or below
Ending Script

حالا که آموختیم خطاهای خودمان را ایجاد کنیم و چگونگی آنها را به کار ببریم، اجازه دهید تا روش ثبت (لاگ کردن) خطاها را داشته باشیم :

ثبت سابقه خطاها در پی اچ پی

به طور پیش فرض، پی اچ پی، پیغام ورودی خطا به سیستم ثبت خطا در سرور یا یک فایل، بسته به نحوه تنظیم پیکربندی error_log در فایل php.ini می فرستد. با استفاده از تابع error_log می توانیم گزارش خطا را به یک فایل مشخص شده یا یک مقصد از راه دور ارسال کنیم.

ارسال پیام های خطا به خودتان از طریق ایمیل می تواند راه خوبی برای اطلاع از اشتباهات خاص باشد.

ارسال یک پیام خطا توسط ایمیل

در مثال زیر ما یک ایمیل با پیغام خطا ارسال خواهیم کرد و اگر یک خطای خاص رخ داده باشد، اسکریپت را خاتمه خواهیم داد:

<?php
//error handler function
function customError($errno, $errstr) {
echo "<b>Error:</b> [$errno] $errstr<br>";
echo "Webmaster has been notified";
error_log("Error: [$errno] $errstr",1,
"someone@example.com","From: webmaster@example.com");
}
//set error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
$test=2;
if ($test>=1) {
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>

خروجی کد بالا باید چیزی شبیه به این باشد:

Error: [512] Value must be 1 or below
Webmaster has been notified

و ایمیل دریافت شده از کد بالا به نظر می رسد به شرح زیر است:

Error: [512] Value must be 1 or below

البته که این روش نباید با تمام خطاها استفاده شود. خطاهای معمولی بهتر است در سرور با استفاده از سیستم پیش فرض پی اچ پی ثبت شوید.

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب