كيف تتحقق من سجل أخطاء PHP في الاستضافة خطوة بخطوة
إذا كان موقعك يعرض صفحة بيضاء أو خطأ 500 ولا تعرف السبب، فإن أسرع طريق للحل هو فتح سجل أخطاء PHP (PHP error log). في معظم الاستضافات المشتركة تجده داخل لوحة التحكم تحت اسم «Errors» أو «Error Log»، أو في ملف باسم error_log بجانب ملفات موقعك، أو عبر أمر واحد في SSH. المشكلة الحقيقية عادةً ليست «أين السجل» بل أنّ تسجيل الأخطاء غير مفعّل من الأساس، لذا سنغطي الأمرين معاً.
قبل أن نبدأ، انتبه إلى نقطة يخلط فيها كثيرون: «إظهار الأخطاء على الشاشة» (display_errors) شيء، و«كتابتها في ملف سجل» (log_errors) شيء آخر. على موقع مباشر يجب أن يكون الأول مُطفأً حتى لا يرى الزوار تفاصيل حساسة، والثاني مُفعّلاً حتى تراجعها أنت بهدوء لاحقاً.
الطريقة الأولى: من لوحة التحكم (cPanel أو ما شابه)
هذه أسهل طريقة على الاستضافة المشتركة ولا تحتاج أي أوامر:
- سجّل الدخول إلى لوحة التحكم (cPanel أو Plesk أو لوحة المستضيف الخاصة).
- في cPanel ابحث عن قسم Metrics ثم اضغط Errors؛ سيعرض لك آخر أسطر أخطاء الخادم مباشرة.
- لسجل أدق خاص بموقعك، افتح File Manager وابحث عن ملف اسمه
error_logفي المجلد الجذر (public_html) أو داخل مجلد التطبيق. - اضغط على الملف ثم View لقراءة محتواه، أو Download لتنزيله ومراجعته على جهازك.
نصيحة من واقع التجربة: ملف error_log قد ينتفخ إلى عشرات الميغابايت مع الوقت. لا تفتحه كاملاً في المتصفح؛ نزّله أو اقرأ آخره فقط، فالأخطاء الأحدث دائماً في النهاية.
الطريقة الثانية: عبر SSH (الأدق للمحترفين)
إن كان لديك وصول SSH (شائع في الـ VPS والخوادم المخصصة)، فالأوامر أسرع وأوضح:
tail -n 50 error_log
tail -f /var/log/php_errors.log
tail -n 50يعرض آخر 50 سطراً، وهي عادةً ما تحتاجه.tail -fيبقي النافذة مفتوحة ويعرض كل خطأ لحظة حدوثه، وهو مثالي عندما تكرّر خطأً معيناً وتريد التقاطه فوراً.
إن لم تكن تعرف مسار السجل، اسأل PHP نفسها:
php -i | grep error_log
الطريقة الثالثة: ضبط المسار من ملف php.ini
إذا لم تجد سجلاً أصلاً، فغالباً التسجيل غير مفعّل. عدّل ملف php.ini (أو أنشئ ملف .user.ini في مجلد موقعك على الاستضافة المشتركة) وأضف:
log_errors = On
error_log = /home/user/public_html/php-errors.log
error_reporting = E_ALL
display_errors = Off
استبدل المسار بمسار حقيقي قابل للكتابة داخل حسابك. بعد الحفظ قد تحتاج إلى انتظار دقيقة أو إعادة تحميل الصفحة حتى تُطبَّق التغييرات على بعض الاستضافات.
هل تستخدم ووردبريس؟ فعّل WP_DEBUG بدل php.ini
كثير من الباحثين عن هذا الموضوع يديرون مواقع ووردبريس. في هذه الحالة الأنسب تفعيل سجل خاص عبر ملف wp-config.php، فوق سطر «توقّف عن التعديل»:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
سيُكتب كل شيء في ملف wp-content/debug.log، وهو غالباً أدق من سجل الخادم العام لأنه يلتقط أخطاء القوالب والإضافات تحديداً.
كيف تختار الطريقة المناسبة؟
| حالتك | أفضل طريقة | لماذا |
|---|---|---|
| استضافة مشتركة بلوحة تحكم | Error Log في cPanel أو ملف error_log | لا تحتاج أوامر ولا صلاحيات خاصة |
| VPS أو خادم مخصص | SSH مع tail | أسرع ومتابعة لحظية للأخطاء |
| موقع ووردبريس | WP_DEBUG_LOG | يعزل أخطاء الإضافات والقوالب |
كيف تقرأ رسالة الخطأ؟
كل سطر يخبرك بثلاثة أشياء: نوع الخطأ، والملف ورقم السطر. تعرّف على الأنواع لتحدد الأولوية:
- Parse/Syntax error: خطأ إملائي في الكود يوقف الموقع كلياً؛ عالجه أولاً.
- Fatal error: دالة أو ملف مفقود يمنع التنفيذ؛ غالباً بعد تحديث إضافة.
- Warning: مشكلة لا توقف الموقع لكنها قد تكسر ميزة.
- Notice / Deprecated: تنبيهات لممارسات قديمة، مهمة خصوصاً مع الانتقال إلى إصدارات PHP 8.x الأحدث.
خطأ شائع يقع فيه المبتدئون: إصلاح أول سطر يرونه. الأصح أن تبدأ من أقدم خطأ Fatal في السلسلة، فهو عادةً السبب الجذري الذي فجّر بقية التحذيرات.
الأسئلة الشائعة
لماذا لا أجد ملف error_log رغم وجود مشكلة؟
غالباً لأن log_errors مُطفأة، أو أن المسار المحدد في error_log غير قابل للكتابة. فعّل التسجيل واضبط مساراً داخل حسابك كما في الأعلى.
هل يمكن رؤية الأخطاء مباشرة على الشاشة؟
نعم عبر display_errors = On، لكن افعل ذلك في بيئة التطوير فقط. إظهارها على موقع مباشر يكشف مسارات ملفاتك للمهاجمين.
أين يوجد السجل افتراضياً على لينكس؟
يختلف بحسب الإعداد، لكنه شائع في /var/log/php_errors.log أو /var/log/apache2/error.log. تحقق دائماً بأمر php -i | grep error_log.
السجل ضخم جداً، ماذا أفعل؟ لا تحذفه أثناء تشغيل الموقع؛ أفرغ محتواه بأمان أو نزّله ثم امسحه من لوحة الملفات، وفعّل تدوير السجلات (log rotation) إن كان لديك وصول للخادم.