عرض أخطاء PHP. عرض الأخطاء على مستويات مختلفة في PHP


دعونا نتعرف على كيفية تمكين/تعطيل عرض الأخطاء على الموقع. من خلال لوحة الإدارة ومن خلال ملف htaccess.

عرض الخطأ (إشعار، تحذير، خطأ فادح) مهم و الوظيفة المطلوبة، من الجيد أنها موجودة! وإلا فإن مشرفي المواقع سيقضون أشهرًا في البحث يدويًا عن الأخطاء في كود موقعهم.

كيفية تمكين عرض الأخطاء من لوحة إدارة Joomla 3؟

للقيام بذلك، في لوحة إدارة Joomla، انتقل إلى "النظام - الإعدادات العامة".

انتقل إلى علامة التبويب "الخادم"، وهناك سترى خيار "رسائل الخطأ". حدد الوضع "الحد الأقصى".

دعونا ننقذ.

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

بعد تمكين ظهور رسائل الخطأ على شاشة بيضاء، سيظهر لك نوع الخطأ ووصفه.
باستخدام هذا الوصف، يمكنك العثور على حل في بحث Yandex أو Google.

تمكين عرض أخطاء php عبر ملفconfig.php

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

أنه يحتوي على التوجيه

public $error_reporting = "افتراضي";

لتمكين عرض الأخطاء، قم بتغيير الإعداد الافتراضي إلى الحد الأقصى

كيفية تمكين عرض الأخطاء عبر .htaccess

إذا لم يكن لديك Joomla، ولكن البرنامج النصي الخاص بك، أو لسبب ما لا يمكنك تمكين رسائل الخطأ بالطريقتين الأولين، فيمكن القيام بذلك من خلال ملف .htaccess، الموجود أيضًا في المجلد الجذر لموقعك.

افتح .htaccess - انتبه إلى النقطة الموجودة أمامك. إذا لم يكن لديك مثل هذا الملف، فقم بإنشائه.
في أنظمة CMS يطلق عليه عادةً htaccess.txt ويمكن إعادة تسميته ببساطة إلى .htaccess

في الأعلى أضف السطر:

تشغيل php_flag Display_errors

والسطر:

php_flag Display_errors معطل

يطفئ عرض الأخطاء.

ما هي أنواع رسائل خطأ PHP الموجودة؟

الأكثر شيوعا هي:

يلاحظ- إشعار بوجود أخطاء بسيطة في الكود. عادةً ما يظل الموقع قيد التشغيل.

تظهر هذه الإخطارات فقط في الرأس.

تحذير- التحذير من المزيد أخطاء خطيرة. في بعض الأحيان مع مثل هذا التحذير، تظل وظيفة الموقع أيضا، وأحيانا شاشة بيضاء.

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

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

لا آخذ في الاعتبار الصفحة في Drupal التي تسمح لك بعرض الأخطاء على الشاشة (المسؤول/الإعدادات/الإبلاغ عن الأخطاء)، لأن... لن ينقذك من شاشة بيضاء. يعرض الأخطاء التي تؤدي إلى تعطيل الوحدات، وليس الموقع ككل. أولئك. إذا نسيت وضعه (على سبيل المثال) issetبالنسبة للمتغير الذي لم يتم تعريفه، سيتم عرض خطأ على الشاشة. ولكن إذا نسيت وضع فاصلة منقوطة بعد إجراء العملية، فلن يعرض Drupal هذا الخطأ بعد الآن، وستظهر لك شاشة بيضاء.

هناك عدة طرق لتمكين إخراج الخطأ.

الطريقة الأولى: تمكين عرض الأخطاء عبر php.ini

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

تقرير_الخطأ = E_ALL

الطريقة الثانية: تمكين عرض الأخطاء عبر .htaccess

يوجد في جذر Drupal ملف .htaccess الذي ينظم عمليات تحميل الصفحة. لتمكين المراسلة، افتحه وأضف السطرين التاليين:

Php_flag Display_errors على php_flag Display_startup_errors على

الطريقة الثالثة: تمكين عرض الأخطاء عبر ملف Index.php

دعونا نتطرق إلى الملفات الموجودة في جذر دروبال مرة أخرى، ولكن هذه المرة Index.php. هنا، لعرض الرسائل، تحتاج إلى إضافة error_reporting(7) قبل السطر الذي يحتوي على اتصال bootstrap.ini:

Error_reporting(7); require_once "./includes/bootstrap.inc" ;

الطريقة الرابعة. تمكين عرض الأخطاء عبر settings.php

سأقول على الفور أن هذه الطريقة تعمل فقط من أجل دروبال 7. يوجد ملف settings.php في المجلد sites/default/. افتحه وأضف هذه السطور:

Error_reporting(-1); $conf [ "error_level"] = 2 ؛ ini_set ("display_errors"، TRUE)؛ ini_set ("display_startup_errors" , TRUE ) ;

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

سأخبرك في هذه المقالة بكيفية جعل PHP يعرض رسائل الخطأ على شاشة المراقبة في نافذة المتصفح. التعليمات صالحة للحالة التي تستخدم فيها خادم الويب Apache وإذا كان PHP الخاص بموقعك متصلاً كوحدة Apache.

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

تمكين ظهور أخطاء PHP على الشاشة باستخدام ملف .htaccess

هذا جدا طريقة ملائمةلتصحيح كود PHP. يعمل في جميع الحالات تقريبا. في المجلد الذي يحتوي على البرنامج النصي الموجود على الموقع، نضع ملف .htaccess بالمحتويات التالية:

Php_flag Display_errors على php_flag Display_startup_errors على php_flag error_reporting E_ALL

  • Display_errors- يتضمن خيار عرض الأخطاء على الشاشة مع باقي الكود.
  • Display_startup_errors- تمكين خيار عرض الأخطاء التي تحدث عند بدء تشغيل PHP عندما لا يعمل توجيه Display_errors بعد.
  • الإبلاغ عن الأخطاء- يشير إلى الأخطاء التي يتم عرضها حسب مستوى الأهمية. عندما يتم تعيين التوجيه إلى E_ALLيتم عرض كافة الأخطاء.

تمكين ظهور خطأ PHP في رمز ملف PHP

هذه الطريقة ملائمة لأنك تتحكم في عرض الأخطاء على الشاشة في برنامج PHP النصي نفسه. المعلمات التي تم تعيينها باستخدام الدالة ini_set() لها أولوية أعلى وتتجاوز التوجيهات php.iniو .htaccess. ضع الكود التالي في بداية ملف PHP:

Ini_set("display_errors", 1); ini_set("display_startup_errors", 1); ini_set("error_reporting", E_ALL);

تمكين ظهور أخطاء PHP على الشاشة باستخدام ملف php.ini

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

Display_errors = قيد العرض_startup_errors = قيد الإبلاغ عن الأخطاء = E_ALL

أفضل طريقة لعرض أخطاء PHP على الشاشة

في رأيي مستخدم عاديالأكثر ملاءمة للاستخدام .htaccessخاصة إذا كان لديك أكثر من ملف PHP. الطريقة رقم 2 مناسبة لتصحيح أخطاء ملف PHP واحد، حتى لا تؤثر على مستوى إخراج الخطأ للآخرين مخطوطات PHP. الخيار مع php.iniمناسب فقط لمسؤولي الخادم، ولكن تأثيره ينطبق على جميع المواقع الموجودة على هذا الخادم.

شكر وتقدير

تم استخدام المصادر التالية عند كتابة هذا المقال.

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

كيف تعمل؟

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

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

إعدادات

للتكوين بأكمله مترجم PHPملف php.ini هو المسؤول. يحتوي على توجيه error_reporting، الذي يحدد مخرجات الأخطاء في PHP. ومع ذلك، على الرغم من أنها تتضمن معالجة الاستثناءات، إلا أن Display_errors مسؤول عن عرضها في نافذة المتصفح. إذا تم تعطيله، فسيعرض النظام صفحة فارغة بدلاً من الخطأ.

تصنيف الاستثناءات

يمكن تقسيم إخراج الخطأ في PHP إلى عدة فئات:

    الأخطاء التي ستتسبب في توقف تشغيل البرنامج النصي. ما يسمى القاتلة. وتشمل هذه E_ERROR، E_COMPILE_ERROR؛

    الأخطاء التي يمكن إصلاحها. يمكن أن تكون قيمهم لتوجيه Error_reporting: E_WARNING وE_NOTICE وغيرها.

يجدر النظر في كل نوع بمزيد من التفصيل ووصف وظائفه.

    E_ERROR. عادةً ما يشير هذا النوع إلى الأخطاء التي لا يمكن حلها بسرعة أو لا يمكن متابعة البرنامج النصي. قد تتضمن هذه المشاكل في تخصيص الذاكرة؛

    تحذير إلكتروني. سيستمر الرمز في العمل، ولكن سيتم عرض تحذير يشير إلى وجود نوع من الخطأ، والذي يشار إلى رمزه في الرسالة. غير مهم؛

    إشعار إلكتروني. الإخطارات التي تشير إلى حدوث شيء ما يمكن أن يسبب خطأ. كما أنها ليست ضرورية لتنفيذ التعليمات البرمجية؛

    E_USER_ERROR. الأخطاء الناتجة عن المستخدم نفسه؛

    E_ALL. وهذا يشمل جميع أنواع الأخطاء. عادة، هذا الخياريتم تمكينه افتراضيًا عند تثبيت المترجم الفوري.

كيفية تمكين إخراج الخطأ في PHP

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

تشغيل أخطاء العرض

تقرير_الخطأ E_ALL

ستسمح لك هذه الأوامر بعرض جميع رسائل الخطأ مباشرة في نافذة المتصفح.

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

تشغيل php_flag Display_errors

الإبلاغ عن خطأ php_value -1

يمكنك أيضًا عرض الأخطاء مباشرة من الكود باستخدام الدالة ini_set(). ومع ذلك، تجدر الإشارة إلى أنه بعد الانتهاء من تطوير الموقع، قد يؤدي استخدامه إلى حدوث مشكلات أمنية.

الكتابة إلى ملف

PHP يسمح لك بحفظ جميع الأخطاء التي تحدث في مكان محددعلى القرص الصلب الخاص بك. لتضمين مخرجات خطأ PHP في ملف، يمكنك استخدام ثلاث طرق:

    تحرير ملف php.ini. هنا تحتاج إلى تحديد سطرين. الأول هو log_errors = On، والذي يقوم بالفعل بتنشيط خيار الإخراج. والثاني هو error_log = المسار/إلى الملف/المطلوب.

    تغيير هتكس. يمكنك أيضًا إضافة سطرين إليه. php_value log_errors "on" وphp_value error_log path/to file.

    استخدم الدالة ini_set في المكان المطلوب في الكود.

خاتمة

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

سننظر اليوم في عدة طرق لتمكين إخراج الأخطاء في PHP.

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

الطريقة الأولى. تمكين إخراج الخطأ في ملف PHP.

يمكنك تمكين إخراج الخطأ مباشرة في الملف الذي تكتب فيه الكود. للقيام بذلك، ضع الأسطر التالية في البداية:

ini_set("display_errors", 1); ini_set("display_startup_errors", 1); error_reporting(E_ALL);

ini_set ("display_errors" , 1 ) ;

ini_set ("display_startup_errors" , 1 ) ;

error_reporting(E_ALL);

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

الطريقة الثانية. تمكين عرض الأخطاء في ملف php.ini.

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

error_reporting = E_ALLdisplay_errors = قيد العرض_startup_errors = قيد التشغيل

error_reporting = E_ALL

Display_errors = قيد التشغيل

Display_startup_errors = قيد التشغيل

بعد حفظ التغييرات في الملف، أعد تشغيل الخادم الخاص بك وستدخل التغييرات حيز التنفيذ.

الطريقة الثالثة. تمكين إخراج الخطأ في ملف .htaccess.

هناك طريقة أخرى لتمكين الأخطاء وهي إجراء تغييرات على ملف .htaccess. للقيام بذلك، ابحث عن هذا الملففي نظام ملفات موقعك وأضف الأسطر التالية إليه:

php_valuedisplay_errors 1 php_valuedisplay_startup_errors 1php_value error_reporting E_ALL

php_valuedisplay_errors1

php_value Display_startup_errors1

php_value error_reporting E_ALL

كن حذرا، كما هو الحال مع البعض أنظمة إدارة المحتوى (CMS).لديك ملف آخر يسمى htaccess.txt، والذي يعمل كقالب لإجراء التعديلات. تحتاج إلى تغيير ملف .htaccess، وإلا فلن يكون للتغييرات أي تأثير على نتيجة الخطأ.

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