PDA

نسخه کامل مشاهده نسخه کامل : تابع error_reporting



Mr.Pooya
11-07-2014, 00:15
سلام

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

در PHP چندین راه هست برای این کار:

۱- اگر به تنظیمات PHP سرورتون دسترسی دارید می تونید فایل php.ini رو باز کنید و این مقدار رو پیدا کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و به این صورت تغییرش بدید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این روش نمایش خطا ها رو تماما غیر فعال می کند می کند که اصلا پیشنهاد نمیشه.

۲- می تونید برای یک برنامه خاص روی سرور ارور ها رو غیر فعال کنید به این صورت که شما باید فایل اصلی این برنامه که در تمامی صفحات استفاده میشه رو پیدا کنید و فانکشن های زیر رو در اون قرار بدید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در خط اول فانکشن ini_set مقادیر فایل php.ini رو تغییر میده که اگر به اون فایل دسترسی ندارید یا در هر صورت نمی خواهید تغییرش بدید این روش خوبی هست و در خط دوم هم error_reporting همون تابع مورد نظر ما هست که خطا ها رو نشون میده. البته اگر display_errors رو خاموش کنید ارور ها دیگر نمایش داده نخواهند شد ولی error_reporting رو هم می تونید استفاده کنید که به صورت کلی syntax این تابع مانند زیر هست :



1
E_ERROR
Fatal run-time errors. Errors that can not be recovered from. Execution of the script is halted


2
E_WARNING
Non-fatal run-time errors. Execution of the script is not halted


4
E_PARSE
Compile-time parse errors. Parse errors should only be generated by the parser


8
E_NOTICE
Run-time notices. The script found something that might be an error, but could also happen when running a script normally


16
E_CORE_ERROR
Fatal errors at PHP startup. This is like an E_ERROR in the PHP core


32
E_CORE_WARNING
Non-fatal errors at PHP startup. This is like an E_WARNING in the PHP core


64
E_COMPILE_ERROR
Fatal compile-time errors. This is like an E_ERROR generated by the Zend Scripting Engine


128
E_COMPILE_WARNING
Non-fatal compile-time errors. This is like an E_WARNING generated by the Zend Scripting Engine


256
E_USER_ERROR
Fatal user-generated error. This is like an E_ERROR set by the programmer using the PHP function trigger_error()


512
E_USER_WARNING
Non-fatal user-generated warning. This is like an E_WARNING set by the programmer using the PHP function trigger_error()


1024
E_USER_NOTICE
User-generated notice. This is like an E_NOTICE set by the programmer using the PHP function trigger_error()


2048
E_STRICT
Run-time notices. PHP suggest changes to your code to help interoperability and compatibility of the code


4096
E_RECOVERABLE_ERROR
Catchable fatal error. This is like an E_ERROR but can be caught by a user defined handle (see also set_error_handler())


8191
E_ALL
All errors and warnings, except level E_STRICT (E_STRICT will be part of E_ALL as of PHP 6.0)




برای خاموش کردن نمایش ارور ها هم همونطور که گفته شد از مقدار ۰ استفاده کنید.

۳- اگر فقط می خواهید برای یک فانکشن یا مقدار ارور ریپورتینگ رو خاموش کنید کافی هست علامت @ را به اول آن اضافه کنید برای مثال :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که require_once در اینجا فانکشنی هست که به عنوان مثال استفاده شده است.

امیدوارم این آموزش مورد استفاده قرار بگیره