همانطور که میدونید هنگام توسعه یک برنامه با انواع خطاها روبرو هستیم، برای دیباگ کردن برنامه لازم است در فاز توسعه این خطاها را مشاهده کنیم تا نسبت به دیباگ کردن آنها اقدام کنیم.
در صورتیکه از فریمورکهایی همچون Laravel استفاده کنیم نیاز به فعالسازی نمایش خطاها نیست و کافی است در فایل تنظیمات فریمورک آن را اکتیو کنیم ولی گاهی وقتها در برنامههای که نسبت به دیباگ آنها اقدام میکنیم از فریمورک خاصی استفاده نشده است پس لازم است بدانیم چطور خطاها را نمایش و دیباگ کنیم.
۱ – تنظیم نمایش خطاها
ini_set ( string $varname , string $newvalue ) ini_set('display_errors', '1'); ini_set('display_errors', 'on');
Sets the value of the given configuration option. The configuration option will keep this new value during the script’s execution, and will be restored at the script’s ending.
۲ – تعیین نمایش سطح خطاها
int error_reporting ([ int $level ] )
همانطور که میدانید با انواع سطح خطاها روبرو هستیم با استفاده از این تابع تعیین میکنیم که چه نوع خطاهایی نمایش داده شود.
The error_reporting() function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script. If the optional level
is not set, error_reporting() will just return the current error reporting level.
// Report all PHP errors (see changelog) error_reporting(E_ALL); // Report all PHP errors error_reporting(-1); // Turn off all error reporting error_reporting(0); // Same as error_reporting(E_ALL); ini_set('error_reporting', E_ALL);
سطح خطاهایی که وجود دارند :
- E_ERROR : A fatal error that causes script termination
- E_WARNING : Run-time warning that does not cause script termination
- E_PARSE : Compile time parse error.
- E_NOTICE : Run time notice caused due to error in code
- E_CORE_ERROR : Fatal errors that occur during PHP’s initial startup (installation)
- E_CORE_WARNING : Warnings that occur during PHP’s initial startup
- E_COMPILE_ERROR : Fatal compile-time errors indication problem with script.
- E_USER_ERROR : User-generated error message.
- E_USER_WARNING : User-generated warning message.
- E_USER_NOTICE : User-generated notice message.
- E_STRICT : Run-time notices.
- E_RECOVERABLE_ERROR : Catchable fatal error indicating a dangerous error
- E_DEPRECATED : Run-time notices.
- E_ALL : All errors and warnings (E_STRICT became a part of E_ALL in PHP 5.4)
درصورتیکه فایل php.ini را باز کنید و error_reporting رو جستجو کنید میتوانید تنظیمات آن که کامنت شده است را مشاهده کنید :
۱ – Syntax Error ( Parse Error )
این نوع خطاها هنگامی رخ میدهد که در نوشتن سینتکس و ساختار کدهای php مشکلی وجود داشته باشد برای مثال قرارندادن سمیکالن، جاگذاشتن یکی از علامتهای کوتیشن و …
نکته : با رخ دادن parse error کل روند اجرای اسکریپت متوقف میشود.
۲ – Fatal Error
اصطلاحا به آنها خطای مهلک یا کشنده گفته میشود. برای مثال وقتی برنامه نویس دو تابع با نام یکسان تعریف میکند و یا تابعی که تعریف نشده است صدا زده شود و یا مسیردهی یک فایل php که require شده است اشتباه باشد.
نکته : با رخ دادن fatal error کل روند اجرای اسکریپت متوقف میشود.
۳ – Warning Error
این خطاها اجرای برنامه را متوقف نمیکنند. برای مثال وقتی تابعی را فراخوانی میکنیم و تعداد پارامترها را اشتباه پاس میدهیم، و یا مسیردهی فایلها وقتی فایلی را include میکنیم را اشتباه بنویسیم و … لازم است تاکید کنم نمایش warning error ها بستگی به کانفیگ سرور نیز دارد.
۴ – Notice Error
این نوع خطاها، خطاهای آگاهی دهنده هستند و روند اجرای برنامه را متوقف نمیکنند. برای مثال وقتی از متغیری استفاده کنیم که تعریف نشده باشد و یا در آرایه ای ایندکسی را فراخوانی کنیم که در آرایه وجود نداشته باشد.
در نهایت برای دیباگ کردن برنامه خود لازم است برای تسریع روند کار از دیباگرهایی همچون XDEBUG و Zend استفاده کنیم و روی نرم افزارهایی که کدنویسی میکنیم نصب کنیم.
مطالعه بیشتر :