برنامه های PHP دارای ۴ نوع ارور هستند که عبارتند از Fatal errors, Parse or syntax errors, Notice errors, Warning errors که در ادامه همه را بررسی می کنیم و سپس یاد خواهیم گرفت که چگونه ذخیره شدن یا نشدن لاگ ها روی سرور و خروجی ارور ها در سمت کاربر را کنترل یا در واقع فعال و غیر فعال کنیم، بنده در ادامه قطعه کد را هم به زبان PHP و هم به زبان آپاچی کانفیگ یا همان htaccess برای شما قرار می دهم.
ارور هایی به شدت جدی هستند که رخ دادنشان باعث می شود که برنامه توقف پیدا کند، برای مثال اگر PHP بخواهد یک فانکشن که وجود ندارد را پیدا کند برنامه متوقف شده و با ارور Fatal مواجه می شود.
این نوع ارور زمانی رخ می دهد که کاراکتر های اشتباه یا خارج از استاندارد نوشتاری PHP تایپ کرده باشیم و یا کاراکتر سمی کالن را در انتهای خطوط برنامه فراموش کرده باشیم و از این قبیل اشتباهات نوشتاری و... در این نوع ارور ها برنامه متوقف نمی شود اما پیامی با عنوان Parse error: syntax error, unexpected توسط PHP نمایش داده می شود.
در این نوع ارور ها PHP سعی می کند به ما اطلاع دهد که چیزی (مثلا یک تابع Built-in) ممکن است در آینده به مشکل تبدیل شود و ما را آگاه می کند، این ارور ها جنبه اطلاع رسانی داشته و برنامه را متوقف نمی کنند، توابع Built-in یا Internal (built-in) functions به توابعی گفته می شود که پیش ساخته و به صورت پیش فرض درون زبان PHP وجود دارند.
اخطار ها یا هشدار ها ارور هایی هستند که زمانی رخ می دهند که قسمتی از برنامه دارای مشکلاتی است که ممکن است در آینده به مشکلات بحرانی تبدیل شوند این نوع ارور ها باعث توقف برنامه نمی شوند (اخطار معمولا چیزی را نشان می دهد که هنوز یک مشکل کامل نیست یا حداقل یک مشکل مهم و بحرانی نیست)
این کد باید در روت دایرکتوری برنامه قرار بگیرد تا عمل کند، گزینه پیشنهادی من این روش است
# Disable all errors with htaccess
# غیر فعال کردن تمامی ارور ها در کل برنامه (نمایش و لاگ)
php_flag error_reporting 0
php_flag display_errors 0
php_flag display_startup_errors 0
# Enable all errors with htaccess
# فعال کردن تمامی ارور ها در کل برنامه (نمایش و لاگ)
php_flag error_reporting 1
php_flag display_errors 1
php_flag display_startup_errors 1
این کد باید در شروع برنامه قرار بگیرد و دقیقا از نقطه قرارگیری به بعد عمل خواهد کرد، بر اساس معماری نرم افزاری که در پروژه پیاده سازی کرده ایم می توانیم از این کد استفاده کنیم
// Disable all errors with php
// غیر فعال کردن تمامی ارور ها در کل برنامه (نمایش و لاگ)
error_reporting(0);
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
// Enable all errors with php
// فعال کردن تمامی ارور ها در کل برنامه (نمایش و لاگ)
error_reporting(1);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);