نکاتی راجب error_reporting
و set_error_handler
و register_shutdown_function
:
- دستور error_reporting
برخلاف تصور خیلی ها که فکر می کنند این دستور خطاها رو "نمایش" میده، این دستور موتور دریافت خطاها هستش. (نه حتی Log کردن خطا)
- دستور set_error_handler
میشه گفت دستوری برای ثبت تابع customize کننده رفتار خطا هستش (مثلاً برای کادر بندی متون خطا، ایمیل کردن خطا، دادن راه حل به کاربر و...)
- دستور register_shutdown_function
دستوری برای ثبت تابع callback هستش که هنگام متوقف شدن و پایان یافتن پردازش اسکریپت، اون تابع callback اجرا بشه (همچنین زمانی که exit / die صدا زده میشه)
اصول نامگذاری: onScriptShutdown یا onScriptEnd یا onShutdown....
نکته: توسط این دستور میشه خطاهای نوع E_ERROR , E_PARSE , E_CORE_ERROR , E_COMPILE_ERROR رو هم جذب کرد
-
دستور
ini_set('display_errors', TRUE);
دستوری برای نمایش خطا هستش. اگر دستور error_reporting
خاموش باشه این دستور هم کار نمی کنه. اگر دستور error_reporting
روشن باشه ولی این دستور false
باشه، اسکریپت کماکان خطاها رو دریافت می کنه اما نمایش نمیده.
-
دستور
ini_set('log_errors', TRUE);
دستوری برای ذخیره خطا در فایل هستش. اگر دستور error_reporting
خاموش باشه این دستور هم کار نمی کنه. اگر دستور error_reporting
روشن باشه ولی این دستور false
باشه، اسکریپت کماکان خطاها رو دریافت می کنه اما ذخیره نمی کنه.
بنابراین برای محیط development همگی باید فعال و true
باشن و برای محیط production(سرور واقعی یا تحویل به مشتری) همه باید فعال و true
باشن بجز دستور display_errors
!