كيفية إظهار أخطاء PHP: دليل شامل للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا يصمت PHP عندما يحدث خطأ؟

\n\n

هل سبق لك أن كتبت سكربت PHP، وشغلته في المتصفح — ورأيت... صفحة بيضاء فارغة؟ لا رسائل، لا تلميحات. فقط صمت وشعور بأنك فعلت شيئاً خاطئاً. هل يبدو ذلك مألوفاً؟

\n\n

هذه واحدة من أكثر المشاكل شيوعاً التي يواجهها المبتدئون في PHP. سؤال «How can I get useful error messages in PHP?» على Stack Overflow حصد آلاف المشاهدات. ولا عجب: بدون رسائل أخطاء واضحة، يتحول تصحيح الأخطاء إلى تخمين عشوائي.

\n\n

في هذا المقال، سنشرح كيفية «جعل PHP يتحدث» ليخبرك بصراحة ما الخطأ الذي حدث. ستتعرف على الإعدادات المسؤولة عن عرض الأخطاء، وكيفية تفعيلها في مراحل التطوير المختلفة، وماذا تفعل إذا استمرت الأخطاء في الاختفاء. هيا بنا!

\n\n

لماذا يخفي PHP الأخطاء افتراضياً؟

\n\n

قبل أن نبدأ في تعديل الإعدادات، دعنا نفهم السبب. PHP هي لغة تعمل على الخادم. على الخوادم الإنتاجية (production)، عرض الأخطاء للمستخدمين ممارسة سيئة. تخيل: بدلاً من صفحة متجر إلكتروني جميلة، يرى العميل شيئاً مثل Fatal error: Call to undefined function. هذا ليس فقط غير جميل، بل غير آمن أيضاً — فقد يتمكن المخترق من معرفة هيكل الكود الخاص بك.

\n\n

لذلك، جعل مطورو PHP عرض الأخطاء في المتصفح معطلاً افتراضياً. لكن على الخادم المحلي (مثل OpenServer, XAMPP, MAMP) أو في مرحلة التطوير، هذا يعيق العمل بشكل كبير. دعنا نصلح ذلك.

\n\n

الطريقة 1: تفعيل الأخطاء عبر php.ini (شامل)

\n\n

الطريقة الأكثر موثوقية هي تعديل ملف الإعدادات php.ini. ابحث عنه في مجلد PHP الخاص بك (أو في لوحة تحكم الخادم المحلي). افتح الملف وابحث عن (أو أضف) الأسطر التالية:

\n\n
display_errors = On\nerror_reporting = E_ALL\n
\n\n

ماذا يعني هذا؟

\n
    \n
  • display_errors = On — يسمح بعرض الأخطاء مباشرة على الشاشة (في المتصفح أو الطرفية).
  • \n
  • error_reporting = E_ALL — يطلب من PHP عرض جميع أنواع الأخطاء: من التحذيرات (warnings) إلى الأخطاء الفادحة.
  • \n
\n\n

بعد التعديل، أعد تشغيل خادم الويب (Apache, Nginx). الآن أي سكربت سيعرض الأخطاء.

\n\n

هام: على الخادم الإنتاجي، لا تترك أبداً display_errors = On. استخدم Off وقم بإعداد تسجيل الأخطاء (كما سنشرح لاحقاً).

\n\n

الطريقة 2: تفعيل الأخطاء داخل السكربت (طريقة سريعة)

\n\n

إذا لم يكن لديك صلاحية الوصول إلى php.ini (مثلاً في الاستضافة المشتركة)، أو كنت تريد تفعيل الأخطاء لملف واحد فقط، استخدم الدالتين ini_set() و error_reporting(). أضف هذه الأسطر في بداية سكربت PHP الخاص بك:

\n\n
<?php\nini_set('display_errors', 1);\nini_set('display_startup_errors', 1);\nerror_reporting(E_ALL);\n\n// الكود الخاص بك بعد ذلك\n$foo = 1/0; // سيؤدي إلى تحذير: القسمة على صفر\n?>\n
\n\n

شرح الأسطر:

\n
    \n
  • ini_set('display_errors', 1) — يفعل عرض الأخطاء على الشاشة.
  • \n
  • ini_set('display_startup_errors', 1) — يفعل عرض الأخطاء التي تحدث عند بدء تشغيل PHP (مثل فشل تحميل السكربت نفسه).
  • \n
  • error_reporting(E_ALL) — يعرض جميع مستويات الأخطاء.
  • \n
\n\n

هذه الطريقة تعمل فوراً ولا تتطلب إعادة تشغيل الخادم. مثالية لتصحيح الأخطاء السريع.

\n\n

الطريقة 3: استخدام .htaccess (لخادم Apache)

\n\n

إذا كان خادمك يعمل بنظام Apache، يمكنك تفعيل الأخطاء عبر ملف .htaccess في المجلد الجذر للموقع. أضف إليه:

\n\n
php_flag display_errors on\nphp_value error_reporting E_ALL\n
\n\n

بعد حفظ الملف، ستبدأ الأخطاء في الظهور لجميع السكربتات في هذا المجلد والمجلدات الفرعية. مريح عندما تحتاج إلى تفعيل التصحيح بسرعة.

المدونات

توصيات الكتب