همه چیز درباره لاگ خطای PHP در وردپرس

فهرست مطالب

مقدمه

حتماً برات پیش اومده یه روز سایت وردپرست باز نشه یا خطاهای عجیب بی‌دلیل نمایش داده بشه. این موقعه که لاگ خطای PHP حسابی به دردمون می‌خوره! تو این مقاله می‌خوایم مثل یه دوست فنی باحال، همه‌چیز درباره لاگ خطای PHP در وردپرس رو به‌صورت گپ‌وگفت‌وگویی و به زبان ساده با هم بررسی کنیم.


لاگ خطای PHP چیست؟

انواع خطاهای PHP

وقتی کد PHP اجرا می‌شه، ممکنه با انواع خطاها مواجه بشی:

  • Syntax Error (اشتباه در نحوه نوشتن)
  • Fatal Error (وقتی اجرا کامل متوقف می‌شه)
  • Warning و Notice (هشدارهای جزئی)

تفاوت لاگ خطا و نمایش خطا

  • نمایش خطا: خطاها مستقیم روی صفحه نشون داده می‌شن؛
  • لاگ خطا: خطاها تو یه فایل ثبت می‌شن که بعداً قابل بررسی هستن.

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


چرا به لاگ خطا نیاز داریم؟

عیب‌یابی آسان‌تر

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

بهبود امنیت و سرعت

با مشاهده و رفع خطاها:

  • از هدر رفت منابع سرور جلوگیری می‌کنی؛
  • جلوی سوءاستفاده‌های احتمالی گرفتن اطلاعات حساس سرور گرفته می‌شه.

روش‌های فعال‌سازی لاگ خطا در وردپرس

ویرایش دستی فایل wp-config.php

تنظیم متغیرهای لازم

داخل فایل wp-config.php که تو ریشه وردپرس هست، پیش از خط /* That's all, stop... */ این خطوط رو اضافه یا ویرایش کن:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

این یعنی: خطاها ذخیره بشن ولی نمایش داده نشن.

ساخت و مجوز فایل debug.log

  • چک کن فایل wp-content/debug.log وجود داره.
  • اگه نیست، دستی بسازش.
  • مجوزها رو طوری تنظیم کن که قابل نوشتن توسط وب‌سرور باشه (مثلاً ۶۴۴ یا ۷۷۷ بسته به میزبان).

تنظیم از طریق Cpanel یا php.ini

  • از سی‌پنل یا WHM وارد تنظیمات PHP شو.
  • گزینه‌های display_errors و log_errors را فعال کن.
  • مسیر فایل لاگ رو مشخص کن (error.log یا php_errors.log).

استفاده از افزونه‌های مدیریت لاگ

  • WP Umbrella: امکاناتی برای مانیتور PHP و نمایش لاگ‌ها با جزئیات مثل نوع خطا، نسخه PHP، نسخه افزونه
  • Error Log Monitor یا WP Debugging: دسترسی آسان به لاگ‌ها بدون نیاز به ورود به هاست.

چطور لاگ‌ها را مشاهده و تفسیر کنیم؟

دسترسی به debug.log

۱. با FTP یا File Manager وارد مسیر wp-content شو.
۲. فایل debug.log رو دانلود یا باز کن.

تحلیل پیام‌های لاگ

  • پیام شامل نوع خطا، مسیر فایل، خطای دقیق هست.
  • برای مثال: Fatal error: Allowed memory size… یعنی محدودیت حافظه PHP باید افزایش پیدا کنه.

با تفسیر دقیق، سریع‌تر به راه‌حل می‌رسی.


نکات امنیتی هنگام استفاده از لاگ

نمایش ندادن خطا به کاربران

توی سایت‌های آنلاین، مطمئن شو WP_DEBUG_DISPLAY روی false باشه تا خطاها به کاربر نمایش داده نشه.

محدودیت دسترسی فایل لاگ

مستحکم کن دسترسی فایل رو (مثلاً دیوار آتش htaccess یا ابزار امنیتی)، چون ممکنه اطلاعات داخلی سرور فاش بشه.


خاموش کردن لاگ پس از رفع مشکل

وقتی کارت تموم شد:

define( 'WP_DEBUG', false );
define( 'WP_DEBUG_LOG', false );

تا فضای هاست هدر نره و امنیت حفظ بشه.


بهترین افزونه‌ها برای مدیریت لاگ

WP Umbrella

  • نمایش دقیق خطاها (نوع، پلاگین، نسخه PHP)
  • مناسب برای سایت‌های حرفه‌ای و توسعه‌دهنده‌ها

Error Log Monitor

  • اعلان در پیشخوان وردپرس
  • تنظیمات ساده و کاربردی

جمع‌بندی

لاگ خطای PHP مثل چراغ قوه‌ایه که تو تاریکی راه رو نشون می‌ده. تنها با فعال‌سازی و تحلیل دقیقش:

  • مشکلات وب‌سایت رو سریع رفع می‌کنی،
  • امنیت سایت رو بیشتر می‌کنی،
  • مصرف منابع سایتت بهینه‌تر می‌شن.

یادت باشه: همیشه اول محیط تولید (production)، لاگ رو خاموش کن؛ فقط برای رفع خطا ازش استفاده کن.


پرسش‌های پرتکرار (FAQs)

۱. لاگ خطای PHP کجا ذخیره می‌شود؟
در مسیر wp-content/debug.log یا مسیری که تو php.ini یا کد ini_set مشخص کردی.

۲. بعد از رفع خطا، آیا باید WP_DEBUG رو خاموش کنم؟
بله. خاموش کردنش باعث جلوگیری از مصرف فضای اضافی و محافظت امنیتی می‌شه.

۳. افزونه‌ای بدون هاست برای مدیریت لاگ هست؟
بله؛ افزونه‌هایی مثل WP Umbrella، Error Log Monitor و WP Debugging فایل لاگ رو داخل پیشخوان نشون می‌دن.

۴. چرا log ساخته نمی‌شه؟
چون:

  • فایل لاگ وجود نداره یا قابل نوشتن نیست.
  • WP_DEBUG_LOG روی false قرار داره.
  • سطح error_reporting تنظیم نشده.

۵. چطور نمایش خطا بدون لاگ انجام بشه؟
برای تست محلی می‌تونی WP_DEBUG_DISPLAY را true قرار بدی یا از ویرایش ini/php.ini برای نمایش مستقیم خطاها استفاده کنی.