توابع خطا و Logging PHP

مقدمه PHP Error

توابع Error و Logging به شما اجازه می‌دهند که خطاها را مدیریت و ثبت کنند.

توابع Error به کاربران اجازه می‌دهند که قوانین مدیریت خطا خودمان را تعریف کنیم و روش ثبت خطا را تغییر دهیم.

توابع logging به کاربران اجازه می‌دهند که برنامه‌های خود را ثبت کنند و پیام‌های log را به ایمیل، log سیستم یا ماشین‌های دیگر ارسال کنند.

توابع error برای انجام مدیریت خطا و ثبت استفاده می‌شوند.

توابع error به ما اجازه می‌دهند که قوانین مدیریت خطا خودمان را تعریف کنیم و روش ثبت خطا را تغییر دهیم.

توابع logging به ما اجازه می‌دهند که پیام‌ها را مستقیماً به ماشین‌های دیگر، ایمیل یا log سیستم ارسال کنیم.

توابع گزارش خطا به ما اجازه می‌دهند که نوع و سطح خطاها را تعیین کنیم.

نصب

توابع error بخشی از هسته PHP هستند. نیازی به نصب نیست تا از این توابع استفاده کنید.

پیکربندی زمان‌بندی

رفتار تابع error تحت تأثیر تنظیمات php.ini قرار دارد.

گزینه‌های Errors و logging به شرح زیر است:

نام مقدار پیش‌فرض توضیح دامنه قابل تغییر
error_reporting NULL تنظیم سطح گزارش خطا (اعداد یا مقدار ثابت نام‌گذاری شده) PHP_INI_ALL
display_errors "1"

تعیین اینکه آیا خطاها به عنوان خروجی نمایش داده می‌شوند یا به کاربر مخفی می‌شوند.

توجه:این ویژگی نباید در سیستم‌های تولیدی استفاده شود (فقط برای توسعه پشتیبانی می‌شود)

PHP_INI_ALL
display_startup_errors "0"

اگر display_errors به حالت فعال باشد، اطلاعات خطاها در فرآیند راه‌اندازی PHP نمایش داده نمی‌شوند.

توضیح: توصیه می‌شود که display_startup_errors را به غیر از اهداف رفع خطا غیرفعال کنید.

PHP_INI_ALL
log_errors "0"

تنظیم اینکه آیا اطلاعات خطاها در log_errors یا log_error سرور ثبت می‌شوند یا خیر.

توضیح: این تنظیمات خاصی است که به سرور مرتبط است.

توضیح: در سیستم‌های تولیدی، توصیه می‌شود که از ثبت اطلاعات خطاها در وب‌سایت استفاده کنید.

PHP_INI_ALL
log_errors_max_len "1024"

تنظیم حداکثر تعداد بایت log_errors. در error_log اطلاعات منبع خطا اضافه می‌شود.

مقدار پیش‌فرض 1024 است، اگر به 0 تنظیم شود، طول نامحدود است.

تنظیمات طول این طول برای ثبت خطاها، نمایش خطاها و همچنین $php_errormsg محدودیت دارند.

PHP_INI_ALL
ignore_repeated_errors "0"

تعیین اینکه آیا اطلاعات خطای تکراری ثبت شود یا خیر.

خطاهای تکراری باید در یک فایل و در یک خط کد مشابه ظاهر شوند، مگر اینکه تنظیم ignore_repeated_source به true تنظیم شده باشد.

PHP_INI_ALL
ignore_repeated_source "0"

تعیین اینکه آیا اطلاعات خطای تکراری ثبت شود یا خیر. در حالی که اطلاعات تکراری نادیده گرفته می‌شوند، منبع اطلاعات نیز نادیده گرفته می‌شود.

وقتی که این تنظیم فعال باشد، اطلاعات تکراری از فایل‌های مختلف یا خطوط کد مختلف ثبت نمی‌شوند.

PHP_INI_ALL
report_memleaks "1" اگر این پارامتر به On (پیش‌فرض) تنظیم شده باشد، گزارش‌های نشتی حافظه‌ی شناسایی شده توسط مدیریت حافظه‌ی Zend نمایش داده می‌شوند. PHP_INI_ALL
track_errors "0" اگر فعال باشد، آخرین خطا همیشه در متغیر $php_errormsg وجود دارد. PHP_INI_ALL
html_errors "1" بستن برچسب‌های HTML در اطلاعات خطا.
  • PHP_INI_ALL
  • PHP_INI_SYSTEM در PHP <= 4.2.3.
xmlrpc_errors "0" اگر فعال باشد، گزارش خطای معمولی را غیرفعال کرده و فرمت خطا را به فرمت اطلاعات خطای XML-RPC تنظیم می‌کند. PHP_INI_SYSTEM
xmlrpc_error_number "0" به عنوان مقادیر element faultCode XML-RPC استفاده می‌شود. PHP_INI_ALL
docref_root "" (available since PHP 4.3) PHP_INI_ALL
docref_ext "" (available since PHP 4.3.2) PHP_INI_ALL
error_prepend_string NULL تعیین رشته‌ای که پیش از اطلاعات خطا چاپ می‌شود. PHP_INI_ALL
error_append_string NULL تعیین رشته‌ای که پس از اطلاعات خطا چاپ می‌شود. PHP_INI_ALL
error_log NULL

تنظیم فایلی که خطاهای اسکریپت در آن ثبت می‌شوند. این فایل باید قابل نوشتن توسط کاربر سرور وب باشد.

اگر از مقدار خاص syslog استفاده شده باشد، اطلاعات خطا به ثبت‌نام‌دهنده‌ی سیستم ارسال می‌شود.

PHP_INI_ALL

توابع خطا و Logging PHP

توابع توضیح
debug_backtrace() تولید backtrace.
debug_print_backtrace() چاپ backtrace.
error_get_last() برگردان خطای آخرین رخ‌داده.
error_log() ارسال پیام خطا به ثبت‌نام‌دهنده‌ی خطا سرور، فایل یا هدف دور.
error_reporting() تعیین کنید که کدام خطا گزارش شود.
restore_error_handler() بازپس‌گیری برنامه‌ی پردازش خطا قبلی.
restore_exception_handler() بازگرداندن تابع مدیریت استثناهای قبلی.
set_error_handler() تنظیم تابع مدیریت خطاهای کاربر تعریف شده.
set_exception_handler() تنظیم تابع مدیریت استثناهای کاربر تعریف شده.
trigger_error() ایجاد پیام‌های خطای سطح کاربر.
user_error() نام‌گذاری جایگزین trigger_error()

ثابت‌های خطا و لاگ پیش‌تعریف شده PHP 5

مقدار ثابت توضیح
1 E_ERROR خطاهای قاتل زمان اجرا. خطاهایی که قابل تعمیر نیستند. اجرای اسکریپت را متوقف می‌کنند.
2 E_WARNING خطاهای غیرقابل پیش‌بینی زمان اجرا. این خطاها اجرای اسکریپت را متوقف نمی‌کنند.
4 E_PARSE خطاهای نحوی زمان اجرا. خطاهای تحلیل تنها توسط تحلیل‌گر تولید می‌شوند.
8 E_NOTICE اطلاعیه‌های زمان اجرا. نشان‌دهنده این که اسکریپت ممکن است با خطا مواجه شود، اما در اسکریپت‌هایی که به درستی اجرا می‌شوند نیز ممکن است اطلاعات مشابهی وجود داشته باشد.
16 E_CORE_ERROR خطاهای قاتل زمان راه‌اندازی. این خطا مشابه E_ERROR است، اما توسط هسته موتور PHP تولید شده است.
32 E_CORE_WARNING هشدارهای زمان راه‌اندازی PHP (خطاهای غیرقابل پیش‌بینی). مشابه E_WARNING، اما توسط هسته موتور PHP تولید شده است.
64 E_COMPILE_ERROR خطای قاتل زمان اجرا. مشابه E_ERROR، اما توسط موتور اسکریپت Zend تولید شده است.
128 E_COMPILE_WARNING هشدارهای زمان اجرا (خطاهای غیرقابل پیش‌بینی). مشابه E_WARNING، اما توسط موتور اسکریپت Zend تولید شده است.
256 E_USER_ERROR اطلاعیه‌های خطای کاربر تولید شده. مشابه E_ERROR، اما توسط کاربر خود در کد از تابع PHP trigger_error() تولید شده است.
512 E_USER_WARNING اطلاعیه‌های هشدار کاربر تولید شده. مشابه E_WARNING، اما توسط کاربر خود در کد از تابع PHP trigger_error() تولید شده است.
1024 E_USER_NOTICE اطلاعیه‌های کاربر تولید شده. مشابه E_NOTICE، اما توسط کاربر خود در کد از تابع PHP trigger_error() تولید شده است.
2048 E_STRICT فعال‌سازی پیشنهادات تغییر کد PHP برای اطمینان از بهترین سازگاری و سازگاری به آینده.
4096 E_RECOVERABLE_ERROR Catchable fatal error. It indicates that a potentially very dangerous error has occurred, but it has not yet caused the PHP engine to be in an unstable state. If this error is not caught by the user-defined handler (see set_error_handler()), it will become an E_ERROR and the script will terminate.
8192 E_DEPRECATED Run-time notifications. When enabled, it will warn about code that may not work properly in future versions.
16384 E_USER_DEPRECATED User-generated warning messages. Similar to E_DEPRECATED, but generated by the user themselves using the PHP function trigger_error().
32767 E_ALL All error and warning messages except E_STRICT.