مقالات طراحی وب پی اچ پی مدیریت خطا در PHP

در این آموزش موارد زیر را برسی خواهیم کرد:

  • آموزش مدیریت خطا در PHP
  • طراحی مدیریت کننده خطا در PHP
  • فعال سازی یک خطا در PHP
  • ذخیره یا ارسال پیام های خطا در PHP
  • مرجع توابع مدیریت خطا در PHP

مدیریت خطاهای احتمالی در کدها و اسکریپت های PHP ساده و روان است . در حالت پیش فرض یک پیام خطا همراه با نام فایلی که خطا در آن رخ داده ، شماره خط خطا و پیامی که تشریح کننده خطا است ، به مرورگر ارسال می شود .

نحوه مدیریت خطا در PHP :

در زمان نوشتن اسکریپت ها و برنامه های تحت وب ، مدیریت خطا یک بخش مهم به حساب می آید . اگر کد شما ، نقص مدیریت خطا داشته باشد ، برنامه طراحی شده بسیار مبتدی به نظر آمده و خطراتی ممکن است آن را تهدید نماید .
در این بخش مهمترین و پرکاربردترین متدهای مدیریت خطادر PHP را بررسی می کنیم ، که عبارتند از :

  • تابع ساده ( ) die .
  • برخورد با خطاهای گوناگون و فعال کننده های خطا .
  • گزارش دهی خطا .

ساده ترین روش مدیریت خطا در PHP – تابع ( ) die :

نحوه کار با تابع ( ) die را با یک مثال ساده نمایش می دهیم .
کد زیر یک مثال ساده را نشان می دهد که یک فایل متنی را باز می کند :

مثال:

حال اگر فایل به هر دلیلی وجود نداشته و یا از روی سرور پاک شده باشد ، برنامه پیام خطایی مشابه پیام زیر صادر می کند :

پیام خطا:

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

کد تابع ( ) die :

حال اگر در باز کردن فایل مورد نظر ، خطایی رخ دهد ، به جای پیام طولانی فوق ، پیام ملموس و کوتاه زیر نمایش داده می شود :

پیام خطای جدید:

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

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

  • شدت اهمیت خطا ( error level ).
  • پیام خطا ( error message )

همچین چندین پارامتر اختیاری نیز می تواند داشته باشد :

  • نام فایل ( file name ).
  • شماره خطی از برنامه که خطا در آن رخ داده است ( line number ) .
  • محتوای خطا ( error context ) .

شکل کلی یک تابع طراحی شده برای مدیریت خطا در PHP می تواند به صورت زیر باشد :

 

پارامترهای کد فوق و استفاده آنها :

error_level: این پارامتر شدت اهمیت خطا را تعیین می کند . یک مقدار عددی است و شرح موارد آن در جدول راهنمای شماره ۱ آمده است. استفاده از این پارامتر اجباری است. این پارامتر پیام خطا را که حاوی اطلاعاتی راجع به آن است را تعیین می کند .
error_message: استفاده از این پارامتر اجباری است. این پارامتر نام فایلی که خطا در آن رخ داده است ، را مشخص می کند. استفاده از این پارامتر اختیاری است .
error_line: این پارامتر شماره خطی که خطا در آن رخ داده است را مشخص می کند. استفاده از این پارامتر اختیاری است. این پارامتر نیز تمامی متغیرها و مقدارهایشان که در کد برنامه ای که خطا در آن رخ داده است را شامل می شود .
error_context: استفاده از این پارامتر اختیاری است .
نحوه طراحی یک مدیریت کننده خطا :

تابع زیر یک مدیریت کننده خطای معمولی را نشان می دهد که میزان شدت اهمیت خطا و پیام آن را در خروجی چاپ می کند :

هنگامی که خطایی رخ می دهد ، تابع فوق شدت اهمیت خطا را توسط پارامتر $errno و پیام خطا را توسط پارامتر $errstr دریافت کرده و در خروجی نشان می دهد .
اکنون که تابع مدیریت خطا را طراحی کردیم ، باید کد فراخوان آن را در جاهایی که می خواهیم ، قرار داده تا در صورت بروز خطا ، تابع فوق فراخوانی شود .

تنظیم فراخوان کننده تابع مدیریت خطا ( event handler ) :

مدیریت کننده پیش فرض برای خطا در PHP تعیین شده است . اما در مثال این بخش ، ما قصد داریم تا تابعی به نام ( ) customError را که خود برای اجرا در زمان بروز خطا ، طراحی کرده ایم را به عنوان مدیریت کننده پیش فرض خطا قرار دهیم .
لازم به ذکر است که این امکان وجود دارد تا شما برای هر بخش از کد یا دسته ای از توابع یک مدیریت کننده خطا پیش فرض تعیین کنید ، تا در مواقع مختلف بروز خطا ، به گونه های مختلف با آن برخورد نمایید .
اما در این مثال به وسیله تابع ( ) set_error_handler ، ما تابع ( ) customError را به عنوان مدیریت کننده خطای پیش فرض اسکریپت تعیین کرده ایم :

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

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

تابع ( ) error_trigger:

در این بخش کار با تابع ( ) error_trigger را فرا خواهید گرفت . از تابع ( ) error_trigger در زمانی استفاده می شود که بروز خطا را پیش بینی کرده و کد لازم را برای مدیریت آن تعیین می کنیم .
کار با این تابع را در قالب یک مثال آموزش می دهیم . معمولا خطا در جاهایی که از کاربر ورودی دریافت می کنید ، احتمال زیادی دارد ، که رخ دهد . مثلا کاربر مقادیر غیر مجاز وارد نماید .
در مثالی زیر کدی طراحی کرده ایم تا در صورتی که مقدار متغیر test$ از ۱۰ بیشتر بود ، یک پیام خطا توسط رویداد ( ) error_trigger صادر شود .

مثال :

 

خروجی این خطا ، به صورت زیر خواهد بود :

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

در کد زیر ، به علت اینکه تابع ( ) customError را به عنوان تابع مدیریت کننده پیش فرض کد تعریف کرده ایم ، در هنگام بروز خطا ، تابع ( ) error_trigger پارامترهای لازم را درباره خطا به تایع ( ) customError فرستاده و این بار این تابع خروجی خطا را اعلام کرده و آن را مدیریت می کند :

 

خروجی کد ، این بار به صورت زیر خواهد بود :

 

تابع ( ) error_log:

به صورت پیش فرض ، PHP یک پیام حاوی اطلاعات خطا رخ داده را به سیستم logging سرور یا یک فایل خاص ، بسته به اینکه فایل php.ini ، بر روی سرور چگونه تنظیم شده باشد ، ارسال می کند .
به وسیله تابع ( ) error_log ، می توانید پیام های خطا رخ داده را به یک فایل خاص یا به ایمیل کاربر ارسال نمایید . ارسال یک ایمیل حاوی اطلاعات خطا می تواند یکی از کارآمدترین روش ها باشد . البته فقط این کار را برای خطاهای مهم و از کار اندازنده انجام دهید ، نه هر خطای معمولی ! .
در مثال زیر ، نحوه استفاده از تابع ( ) error_log را در عمل نمایش داده و در صورت بروز خطا ، ایمیلی حاوی اطلاعات آن به آدرس ایمیل کاربر ، ارسال می شود :

مثال:

خروجی خطای رخ داده در سیستم به صورت زیر خواهدد بود :

همچین کاربر ایمیلی با محتویات زیر را دریافت خواهد کرد :

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

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

مدیریت خطا در PHP
به این مطلب رای دهید
Telegram Facebook WhatsApp +Google Twitter LinkedIn

دیدگاه خود را بیان کنید

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

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.