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

مدیریت خطا در PHP
مدیریت خطا به طور پیش فرض در PHP بسیار ساده است. یک پیغام خطا با نام فایل، شماره خط و یک پیام توصیف خطا به مرورگر ارسال می شود.
رسیدگی به خطاها در PHP
هنگام ایجاد اسکریپت ها و برنامه های تحت وب، مدیریت خطا، یک بخش مهم است. اگر کد شما فاقد کد چک کردن خطا باشد، برنامه شما ممکن است بسیار غیر حرفه ای به نظر بیاید و ریسک های امنیتی در برنامه هایتان وجود خواهد داشت.
در این پست برخی از رایج ترین متدهای چک کردن و مدیریت خطاها در PHP را خواهید دید.
ما متد های مختلف مدیریت خطا را نشان خواهیم داد:
► عبارات ساده "die()"
► خطاهای سفارشی و باعث خطا
► گزارش خطا
مدیریت خطای عمومی: استفاده از تابع die()
اولین مثال، یک اسکریپت ساده است که یک فایل متنی را باز میکند. ( در مثالها به جای() از علامتهای <> استفاده کنید)
$file=fopen("welcome.txt","r");
?)
اگر فایل وجود نداشته باشد ممکن است خطایی مانند این را دریافت کنید:
No such file or directory in C:webfolder est.php on line 2
برای جلوگیری از دریافت چنین پیام هایی توسط کاربر،باید قبل از اینکه بخواهیم به فایل دسترسی داشته باشیم، از وجود آن مطمئن شویم.
if(!file_exists("welcome.txt")) {
die("File not found");
} else {
$file=fopen("welcome.txt","r");
}
?)
حال اگر فایل وجود نداشته باشد، پیغامی مثل این صادر خواهد شد:
کد بالا خیلی کارآمدتر از کد قبلی است زیرا بعد از خطا، از یک مکانیسم ساده مدیریت خطا برای جلوگیری از اسکریپت استفاده میکند.
با این حال، به سادگی متوقف کردن اسکریپت همیشه روش مناسبی برای رفع خطا نیست. بیایید نگاهی به دیگر توابع PHP برای مدیریت خطا بیندازیم.
ایجاد یک مدیریت خطای سفارشی
ایجاد یک کنترل خطای سفارشی بسیار ساده است. به سادگی می توان یک تابع خاص را تعریف کرد که هنگام رخ دادن خطا در PHP فراخوانی شود.
این تابع باید قادر به مدیریت حداقل دو پارامتر (سطح خطا و پیغام خطا) باشد اما می تواند تا 5 پارامتر را قبول کند: (اختیاری: فایل، شماره خط، و مفهوم خطا)
سینتکس تابع مدیریت خطا
error_file,error_line,error_context)
پارامترهای این سینتکس و توضیحات هر کدام
► error_level : این پارامتر، الزامی است، سطح گزارش خطای تعیین شده توسط کاربر را مشخص میکند و باید یک مقدار عددی باشد.
► error_message : پارامتر الزامی، پیغام خطایی برای خطای تعیین شده توسط کاربر را مشخص می کند.
► error_file : پارامتر اختیاری که نام فایلی را که خطا در آن رخ داده است، مشخص میکند.
► error_line : اختیاری و شماره خطی را که خطا در آن رخ داده است، تعیین می کند.
► error_context : پارامتر اختیاری که آرایه در حال استفاده شامل متغیرها و تمام مقادیر آنها را مشخص میکند.
سطوح گزارش خطا
این سطوح گزارش خطا، انواع مختلف خطای تعیین شده توسط کاربر هستند که می توان از آنها استفاده کرد:
در زیر تابعی برای مدیریت خطا را می بینید:
echo "(b)Error:(/b) [$errno] $errstr(br)";
echo "Ending Script";
die();
}
کد بالا یک تابع مدیریت خطای ساده است و هنگامیکه فعال می شود، سطح خطا و پیغام خطا را دریافت میکند. سپس سطح خطا و پیغام خطا را در خروجی نشان می دهد و اسکریپت را به پایان می رساند.
حال که یک تابع مدیریت خطا داریم، باید تصمیم بگیریم که چه موقع آن را فعال کنیم.
تنظیم هندلر خطا
مدیریت خطای پیش فرض در PHP، در هندلر خطا ساخته شده است. میتوان مدیریت کننده خطا را برای اعمال روی برخی اشتباهات و خطاهای دیگر تغییر داد و در اینصورت اسکریپت می تواند خطاهای مختلف را به روش های مختلف اداره کند:
از آنجا که ما می خواهیم تابع سفارشی ما تمام خطاها را مدیریت کند، تابع set_error_handler() تنها به یک پارامتر نیاز دارد، پارامتر دوم می تواند برای تعیین سطح خطا اضافه شود.
تست مدیریت کننده خطا برای نمایش متغیری در خروجی که وجود ندارد:
//error handler function
function customError($errno, $errstr) {
echo "Error: [$errno] $errstr";
}
//set error handler
set_error_handler("customError");
//trigger error
echo($test);
?)
دوستان ممنون میشم واسه رفع این ارور کمکم کنیدتو جوملا 3 میخوام عکس اپلود کنم ارور لاین 531 که میشه این ارور رو میده<?php if(isset($this->images)) foreach($this->images as $img) { ?>