یک برنامه PHP چندین سطح از خطاها و هشدارها را در طول زمان اجرای اسکریپت ایجاد می کند. PHP چهار راه مختلف برای نمایش این خطاها و هشدارها ارائه می دهد که در زیر لیست شده اند:
- error_reporting: تمام خطاها در سطح های مختلف به جز خطاهای سطح E-NOTICE، E-STRICT و E_DEPRECATED را نمایش می دهد.
- display_errors: به طور پیش فرض، مقدار display_errors برابر با off است . اگر آن را روی on تنظیم کنید، تمام خطاها از جمله خطای سینتکس (syntax) نمایش داده شود.
- log_errors: مقدار پیش فرض log_errors برابر با ON است که نشان می دهد ثبت خطا باید انجام شود یا خیر.
- error_log string: رشته error_log نام فایل را تعیین می کند که خطای اسکریپت باید در آن ثبت شود.
چند خط کد در زیر وجود دارد، آن را به فایل PHP خود اضافه کنید تا خطاها نمایش داده شود. این روش، سریعترین راه برای نمایش تمام خطاها و هشدارهای PHP است.
ini_set ('display_errors', 1);
ini_set ('display_startup_errors', 1);
error_reporting (E_ALL);
عملکرد دستورالعمل های فوق به شرح زیر است:
ini_set()
این تابع سعی می کند پیکربندی موجود در فایل php.ini را لغو کند .
display_errors
display_errors دستورالعملی است که تعیین می کند آیا خطا به کاربر نمایش داده می شود یا پنهان می ماند. البته خطاهایی را که در طول راه اندازی اولیه PHP رخ می دهد را کنترل نمی کند.
display_startup_errors
display_startup_errors نیز یک دستورالعمل است که برای یافتن خطا در طول راهاندازی اولیه PHP استفاده میشود.
error_reporting()
error_reporting یک تابع بومی PHP است. برای نمایش خطاها استفاده می شود.
برنامه
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//include a php file which does not exist
include("file.php");
?>
خروجی
خروجی یک خطای warning به مرورگر نشان داده می شود.
Warning: include(file.php): failed to open stream: No such file or directory in file.php on line 6
Warning: include(): Failed opening 'file.php' for inclusion (include_path='C:\xampp\php\PEAR') in file.php on line 6
توجه: هر دو دستورالعمل display_errors و display_startup_errors قادر به نمایش خطاهای syntax نیستند. بنابراین، برای نمایش آن دسته از خطا ها بایستی پیکربندی PHP.ini باید اصلاح شود.
پیکربندی فایل PHP.ini را برای نمایش تمام خطاها و هشدارها
تغییرات زیر باید در فایل php.ini انجام شود تا تمام خطاها از جمله خطای سینتکس نمایش داده شود و سرور آپاچی در xampp راه اندازی مجدد شود.
display_errors = On
دستور display_errors را در فایل PHP.ini روی “On” تنظیم کنید. تمام خطاهایی را نمایش می دهد که با فراخوانی تابع ini_set() قابل نمایش نیستند، مانند خطاهای syntax و parse
برنامه
برنامه PHP زمانی که display_errors در فایل php.ini غیرفعال یا off است.
<?php
//سمی کالون فراموش شده است
for ($i = 5; $i >= 0 $i--) {
echo "It will generate parse error";
}
?>
خروجی
هنگامی که دستور display_errors برابر با off است ، خروجی مانند تصویر زیر به مرورگر نشان داده می شود .
خروجی:
خروجی برنامه فوق زمانی که display_errors در فایل php.ini فعال یا روی on تنظیم می شود و سرور دوباره راه اندازی می شود.
سطح گزارش خطا
همانطور که قبلاً بحث کردیم که PHP سطوح مختلفی از خطاها را تولید می کند. بنابراین، بیایید یاد بگیریم که چه نوع خطاهایی در کد PHP ایجاد می شود.
مقدار ثابت | شرح |
---|---|
E_ERROR | خطای زمان اجرا مرگبار. اجرای برنامه متوقف شده است. |
E_WARNING | خطای زمان اجرا غیر کشنده. اجرای برنامه متوقف نمی شود. |
E_PARSE | خطای زمان کامپایل که توسط parser ایجاد می شود. |
E_NOTICE | این یک اطلاعیه در زمان اجرا است. یعنی اسکریپت PHP چیزی پیدا کرده است که ممکن است یک خطا باشد. |
E_USER_ERROR | E_USER_ERROR شبیه E_ERROR است، اما توسط اسکریپت PHP با استفاده از تابع ()trigger_error تولید میشود. این یک پیام خطای حیاتی است که توسط کاربر ایجاد می شود. |
E_USER_WARNING | E_USER_WARNING یک هشدار غیر حیاتی تولید شده توسط کاربر است و مشابه E_WARNING است. اما همچنین توسط اسکریپت PHP با استفاده از تابع ()trigger_error تولید می شود. |
E_USER_NOTICE | این یک خطای اعلامیه تولید شده توسط کاربر است، مشابه E_NOTICE. |
E_STRICT | این خطا الزاماً یک خطا نیست. بعد از نسخه 5.4.0 PHP بخشی از E_ALL شد. |
E_ALL | تمام خطاها و هشدارها را فعال می کند. |
دیدگاهها