كيفية جعل PHP يعرض جميع الأخطاء: دليل كامل

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

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

ابدأ الدورة

«PHP يعرض شاشة بيضاء، وأنا بحاجة للأخطاء!» — موقف مألوف؟



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



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



لماذا يصمت PHP؟ جذر الشر — إعدادات الخادم



قبل أن نتعلم كيفية الحصول على رسائل مفيدة، دعنا نفهم لماذا لا تظهر. PHP هي لغة ذات فلسفة أمنية صارمة. على خوادم الإنتاج، عرض الأخطاء للمستخدمين هو سلوك سيء وتهديد أمني. لذلك، في php.ini (ملف التكوين الرئيسي لـ PHP) تكون الإعدادات الافتراضية كالتالي:



  • display_errors = Off — لا يتم عرض الأخطاء على الشاشة.
  • error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT — لا يتم عرض جميع أنواع الأخطاء.


لكن للتطوير المحلي، هذا كارثة. كيف يمكن إصلاح ذلك؟ هناك ثلاث طرق رئيسية.



الطريقة 1: تعديل php.ini (إذا كان لديك صلاحية الوصول)



الطريقة الأكثر موثوقية هي تحرير ملف php.ini. ابحث عنه (عادة ما يكون في جذر تثبيت PHP أو في مجلد etc/ على Linux). ثم ابحث عن الأسطر التالية وقم بتغييرها:



; تفعيل عرض الأخطاء على الشاشةdisplay_errors = On

; تعيين الحد الأقصى لمستوى التقرير (جميع الأخطاء، باستثناء ملاحظات الإهمال)error_reporting = E_ALL


بعد التغييرات، تأكد من إعادة تشغيل خادم الويب (Apache، Nginx أو الخادم المدمج لـ PHP)، وإلا لن يتم تطبيق الإعدادات.



هام: على خادم الإنتاج، يجب أن يكون display_errors دائمًا Off. استخدم هذه الطريقة فقط للتطوير.



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



إذا لم يكن لديك صلاحية الوصول إلى php.ini، ولكنك تستخدم Apache، يمكنك تجاوز الإعدادات عبر ملف .htaccess في جذر موقعك. أضف إليه:



php_flag display_errors onphp_value error_reporting E_ALL


هذا سيعمل إذا كان Apache يسمح بتجاوز توجيهات PHP (عادة ما يكون الأمر كذلك على معظم خدمات الاستضافة).



الطريقة 3: تفعيل الأخطاء مباشرة في الكود (الأكثر مرونة)



هذه هي طريقتي المفضلة لتصحيح الأخطاء السريع. يمكنك إدراج هذه الأسطر في بداية السكريبت (مباشرة بعد <?php):



<?php// تفعيل الحد الأقصى لمستوى تقرير الأخطاءerror_reporting(E_ALL);

// تفعيل عرض الأخطاء على الشاشةini_set('display_errors', 1);

// تفعيل عرض أخطاء بدء التشغيل (مثلًا، إذا كان هناك خطأ في ini_set نفسه)ini_set('display_startup_errors', 1);?>


الآن، أي Warning أو Notice أو Fatal Error سيتم عرضه مباشرة في المتصفح. مريح، أليس كذلك؟



ما هي أنواع الأخطاء في PHP وماذا تعني؟



لكي تقرأ «إشارات» PHP، تحتاج إلى معرفة لغتها. إليك الأنواع الرئيسية للأخطاء التي ستراها غالبًا:



  • E_ERROR — خطأ فادح. يتوقف السكريبت. مثال: استدعاء دالة غير موجودة.
  • E_WARNING — تحذير. يستمر السكريبت في العمل، ولكن هناك خطأ ما. مثال: include() لملف غير موجود.
  • E_NOTICE — إشعار. ليس خطأ، ولكنه مشكلة محتملة. مثال: استخدام متغير غير معرف.

المدونات

توصيات الكتب