میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

مدیریت خطا در PHP

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

توابع خطا به ما اجازه می دهد تا قوانین مربوط به مدیریت خطا را تعریف کرده و نحوه ثبت خطاها را اصلاح کنیم.

توابع ورود به سیستم به ما امکان می دهد پیامها را مستقیماً به سایر دستگاهها ، ایمیلها یا گزارشهای سیستم ارسال كنیم.

توابع گزارش خطا به ما امکان می دهد میزان و نوع بازخورد خطا را به صورت دلخواه تنظیم کنیم.


نصب و راه اندازی

توابع خطای PHP بخشی از هسته PHP هستند. برای استفاده از این توابع نیازی به نصب نیست.


توابع خطا و ورود به سیستم PHP

نکته : تمامی توابع مدیریت خطای PHP ، به صورت پیش فرض بر روی سرورهای این زبان نصب شده و نیاز به هیچ نصب اضافه ای نیست .

 

 

نام تابعشرح عملکرد
debug_backtrace ( )این تابع اطلاعات کاملی راجع به خطای رخ داده را ، به صورت یک آرایه نمایش می دهد .
error_get_last ( )این تابع اطلاعات آخرین خطای رخ داده در کد برنامه را بر می گرداند .
error_log ( )این تابع اطلاعات خطاهای رخ داده در صفحه را در یک فایل بر روی سرور ذخیره کرده و یا به ایمیل کاربر ارسال می کند .
error_reporting ( )این تابع مشخص می کند که چه خطاهایی به سیستم گزارش شوند .
set_error_handler ( )این تابع یک تابع را به عنوان تابع پیش فرض برای مدیریت خطاها در صفحه تعیین می کند .
set_exception_handler ( )این تابع ، یک تابع تعیین شده از سوی طراح را به عنوان تابع مدیریت کننده استثناها در صفحه تعیین می کند .
trigger_error ( )این تابع برای شناسایی یک خطا یا فراخوانی تابع مربوط به آن به کار می رود .
user_error ( )این تابع برای شناسایی یک خطا یا فراخوانی تابع مربوط به آن به کار می رود . عملکرد آن همانند تابع ( ) trigger_error است .
debug_print_backtrace()
backtrace را چاپ می کند
error_clear_last()
آخرین خطا را پاک می کند
restore_error_handler()
کنترل کننده خطای قبلی را بازیابی می کند
restore_exception_handler()
کنترل کننده استثنای قبلی را بازیابی می کند

 


سطوح گزارش خطا

 

توضیحانثابتمقدار
خطاهای مهلک زمان اجرا. خطاهایی که نمی توان از آنها بازیابی کرد. اجرای متن متوقف شده است
E_ERROR۱
خطاهای کم اهمیت زمان اجرا. اجرای اسکریپت متوقف نمی شودE_WARNING۲
خطاهای تجزیه زمان کامپایل. خطاهای تجزیه فقط باید توسط تجزیه کننده تولید شود
E_PARSE۴
اطلاعیه های زمان اجرا. اسکریپت در زمان اجرا چیزی را پیدا می کند که می تواند خطا باشد. معمولا در هنگام اجرای اسکریپت اتفاق می افتدE_NOTICE۸
خطاهای مهلک در هنگام راه اندازی PHP. این مانند E_ERROR است ، با این تفاوت که توسط هسته PHP تولید می شود
E_CORE_ERROR۱۶
خطاهای غیر کشنده در هنگام راه اندازی PHP. این مانند E_WARNING است ، با این تفاوت که توسط هسته PHP تولید می شود
E_CORE_WARNING۳۲
خطاهای مهلک زمان کامپایل. این مانند E_ERROR است ، با این تفاوت که توسط موتور نوشتاری Zend تولید می شود
E_COMPILE_ERROR۶۴
خطاهای زمان تلفیقی غیر کشنده. این مانند E_WARNING است ، با این تفاوت که توسط موتور نوشتاری Zend تولید می شود
E_COMPILE_WARNING۱۲۸
خطای خطرناک تولید شده توسط کاربر. مانند یک نوع E_ERROR می باشد که توسط برنامه نویس با تابع ()trigger_error به وجود آمده استE_USER_ERROR۲۵۶
هشدار کم اهمیت تولید شده توسط کاربر. مانند یک نوع E_WARNING می باشد که توسط برنامه نویس با تابع ()trigger_error به وجود آمده استE_USER_WARNING۵۱۲
اطلاعیه تولید شده توسط کاربر. مانند یک نوع E_NOTICE می باشد که توسط برنامه نویس با تابع ()trigger_error به وجود آمده استE_USER_NOTICE۱۰۲۴
با استفاده از PHP می توانید تغییراتی را در کد خود ایجاد کنید که بهترین قابلیت همکاری و سازگاری سریع کد شما را تضمین می کند (از PHP 5 اما در E_ALL تا PHP 5.4 موجود نیست)
E_STRICT۲۰۴۸
خطای خطرناک قابل گرفتن. مانند یک E_ERROR است اما می تواند توسط مدیریت کاربر تعریف شده گرفتار شوذ.E_RECOVERABLE_ERROR۴۰۹۶
اعلامیه های زمان اجرا برای دریافت هشدارهای مربوط به کدی که در نسخه های بعدی کار نمی کند ، این قابلیت را فعال کنید (از PHP 5.3)
E_DEPRECATED۸۱۹۲
پیام هشدار تولید شده توسط کاربر. این مانند E_DEPRECATED است ، با این تفاوت که در کد PHP با استفاده از عملکرد PHP trig_error () تولید می شود (از PHP 5.3)
E_USER_DEPRECATED۱۶۳۸۴
همه خطاها و هشدارهای PHP را فعال کنید
E_ALL۳۲۷۶۷

 

حالا بیاید یک تابع برای مدیریت خطاها ایجاد کنیم:

function customError($errno, $errstr) {
echo “<b>Error:</b> [$errno] $errstr<br>”;
echo “Ending Script”;
die();
}

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

حالا که تابع مدیریت خطا را ساختیم باید تصمیم بگیریم که چه موقع آن را به کار بگیریم.

 


تنظیم مدیریت کننده خطا

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

این امکان وجود دارد تا مدیریت کننده خطا را فقط برای بعضی از خطاها به کار ببریم. در این صوذت اسکریپت می تواند خطاهای مختلفی را با روش های مختلف مدیریت کند. به هر حال ما قصد داریم تا مدیریت کننده خطا سفارشی مان را برای تمام خطا ها استفاده کنیم:

مثال : 
set_error_handler(“customError”);

 

به دلیل اینکه ما می خواهیم تابع مان تمام خطا ها را مدیریت کند، تابع ()set_error_handler تنها به کی پارامتر نیاز دارد. پارامتر دوم می تواند برای یک سطح خطا استفاده شود.

مثال

می خواهیم تابع را نوسط چاپ متغیری که وجود ندارد امتحان کنیم:

مثال : 
<?php
//error handler function
function customError($errno, $errstr) {
echo “<b>Error:</b> [$errno] $errstr”;
}//set error handler
set_error_handler(“customError”);

//trigger error
echo($test);
?>

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

مثال : 
Error: [8] Undefined variable: test

راه اندازی یک خطا

وقتی کاربر میتواند داده هایی را وارد کند، بهتره که وقتی ورودی غیر مجاز وارد کرد یک خطا توسط تابع ()trigger_error به راه بیاندازیم.

مثال :

<?php
$test=2;
if ($test>=1) {
trigger_error(“مقدار باید یک یا کمتر از یک باشد”);
}
?>

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

مثال : 
Notice: مقدار باید یک یا کمتر از یک باشد
in C:\webfolder\test.php on line 6

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

انواع خطا ممکن:

  • E_USER_ERROR
  • E_USER_WARNING
  • E_USER_NOTICE

 

مثال

در مثال زیر اگر متغیر test$ بزرگتر از ۱ باشد یک 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(“مقدار باید یک یا کمتر از یک باشد”,E_USER_WARNING);
}
?>

خروجی به شکل زیر است:

مثال : 
Error: [512] مقدار باید یک یا کمتر از یک باشد
Ending Script

ارسال یک پیام خطا با ایمیل

در مثال زیر ما یک ایمیل محتوی پیام خطا را ارسال می کنیم:

مثال : 
<?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(“مقدار باید یک یا کمتر از یک باشد”,E_USER_WARNING);
}
?>

مثال : 
Error: [512] مقدار باید یک یا کمتر از یک باشد
Webmaster has been notified
مثال : 
Error: [512] مقدار باید یک یا کمتر از یک باشد

 

امیدواریم آموزش مدیریت خطا در PHP نیز برای شما مفید واقع شده باشد .برای مطالعه پست‌ها بیشتر ، ما را در مدرسه کدنویسی تلگرام  و یا در مدرسه کدنویسی اینستاگرام دنبال کنید.

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

 

ارسال دیدگاه

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

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟