31. مدیریت گزارش خطاها (error reporting):
error_reporting تابعی است که به وسیله ی آن شدت و نوع خطا را به منظور ارسال به سرویس دهنده تنظیم می نمایید. به عبارتی دیگر توسعه دهنده می تواند با استفاده از این تابع سطح خطاهای روی داده را مشخص و تنها آن دسته از خطاهایی که مورد نظر وی است را به سرویس دهنده گزارش و ارسال کند. در دستگاه توسعه ی اپلیکیشن می توان با استفاده از روش زیر اعلانیه ها و پیغام های strtict را غیرفعال کرد:
ini_set('display_errors', 1); error_reporting(~E_NOTICE & ~E_STRICT);
در دستگاه نصب و اجرای اپلیکیشن (production)، نمایش خطاها باید غیرفعال شود.
ini_set('display_errors', 0); error_reporting(~E_WARNING & ~E_NOTICE & ~E_STRICT);
لازم به ذکر است که مقدار error_reporting را نباید هیچگاه در دستگاه نصب و اجرای اپلیکیشن (production) بر روی 0 تنظیم نمایید. خطاهایی که شدت آن ها در سطح E_FATALs می باشد حتما باید به سرویس دهنده گزارش شوند. برای غیرفعال کردن diplay خطاها، کافی است از دستور display_errors استفاده نمایید. چنانچه پارامتر error_reporting بر 0 تنظیم شده باشد، آنگاه خطایی صادر نشده و هیچ گزارشی به سرویس دهنده ارسال نمی شود.
اگر display غیرفعال شده باشد، در آن صورت لازم است خطاها برای تحلیل در آینده داخل یک فایل ثبت شوند. برای انجام این کار کافی است تابع ini_set را به صورت زیر فراخوانی نمایید.
ini_set('log_errors' , '1'); ini_set('error_log' , '/path/to/errors.txt'); ini_set('display_errors' , 0); error_reporting(~E_WARNING & ~E_NOTICE & ~E_STRICT);
- لازم است اجازه ی درج اطلاعات در آدرس (path) ‘/path/to/errors.txt’ به سرویس دهنده داده شده باشد، تا سرور بتواند خطاها را در آدرس مزبور ثبت نماید.
- یک فایل ویژه ی خطاها مشخص نمایید چرا که در غیر این صورت تمامی گزارشات در پوشه ی ذخیره خطاها apache/web server error log درج شده و با دیگر خطاهای مربوط به apache اشتباه گرفته می شوند.
- علاوه بر این از آنجایی که داخل اپلیکیشن جاری تنظیم می شود، پوشه های حاوی گزارش خطاها (error log) تنها خطاهای مربوط به اپلیکیشن جاری را دربرمی گیرد (چرا که ممکن است در وب سرور اپلیکیشن های دیگری در حال اجرا باشند).
- path یا آدرس مورد نظر می تواند جایی داخل پوشه ی اپلیکیشن جاری نیز قرار داشته باشد، از اینرو دیگر لازم نیست پوشه های مربوط به سیستم نظیر /var/log جستجو شوند.
- error_reporting را بر روی 0 تنظیم نکنید چرا که در این صورت هیچ خطایی ثبت نخواهد شد.