it-swarm.asia

كيف أسكت PHP أخطاء؟

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

أعرف في Drupal 6 يمكن أن تتوقف الصفحة الموجودة في admin/settings/الإعلام عن الخطأ Drupal من كتابة الأخطاء إلى الشاشة ، ولكن أين يمكنني العثور عليها في Drupal 7؟ يبدو أنه مفقود.

32
drupal_stuff_alter

يتغير المسار ، كما في Drupal 7 نفس الصفحة التي قد تراها من قبل في admin/settings/error-Reporting أصبحت الآن في admin/config/development/logging.

screenshot

29
kiamlaluno

كما هو مقترح ، في Administration » Configuration » Development (في /admin/config/development/logging) يمكنك العثور على إعداد تعطيل عرض رسائل الخطأ ، لكنه لن يعطل الخطأ/الإشعارات تمامًا.

هذا لأن Drupal 7 يفرض E_ALL ، لذلك لا يزالون يكتبون إلى سجل النظام ويمكنك رؤيتهم في السجلات الحديثة يؤثر على أداء موقعك.

لتعطيل الإشعارات تمامًا ، سيتعين عليك إضافة السطر التالي إلى settings.php أو php.ini الملف:

ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);

عرض جميع الأخطاء ، باستثناء الإشعارات وتحذيرات معايير التشفير.

لإسكات جميع PHP الأخطاء ، وهو أمر غير مستحسن ، يمكنك محاولة إضافة ملف الإعدادات الخاص بك:

error_reporting(0); // Disable all errors.

انظر: error_reporting()


المسؤول Drupal 7 كود أساسي لـ E_ALL تسجيل (الملف: includes/bootstrap.inc):

// Enforce E_ALL, but allow users to set levels not part of E_ALL.
error_reporting(E_ALL | error_reporting());

أنظر أيضا:

18
kenorb

شيء واحد لم يذكره أحد قد يكون مفيدًا للأشخاص أن يعرفوه هو أن Drupal 7 يتجاهل جميع مستويات الإبلاغ عن أخطاء النظام المحلي. لذلك لا يمكنك استخدام .htaccess أو حتى php.ini لتعيين مستويات الإبلاغ عن خطأ php في دروبال.

هناك تصحيح مقترح لهذا في D8 ، ولكن حاليًا في D7 أنت مقيد بـ 3 أقنعة خطأ - كل ، لا شيء ، أو أخطاء وتحذيرات - التي تم تعيينها على صفحة المشرف المشار إليها kiamlaluno.

4
forest

الإعدادات دائمًا في admin/config/development/logging :)

3
Remon

لست متأكدًا من أن طريقة Drush غير موثقة للغاية ، ولكن لدي في البرنامج النصي للبناء الخاص بي:

drush vset error_level 0

... مما يحفظ رسائل الخطأ في السجل ولكنه لا يعرضها على الشاشة.

2
Matt Fletcher

قد تحتاج إلى إضافة علامات اقتباس إلى حل kenorb المنشور أعلاه:

ini_set('error_reporting', 'E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR');
1
Greg Lund-Chaix

هناك وحدة لذلك:

https://www.drupal.org/project/errorlevelpermission

من صفحة المشروع:

لذا يمكنك

  • أن يكون له دور في إنشاء المواقع (أو حتى دور مصحح أخطاء خاص) راجع الأخطاء والإشعارات
  • لا يرى الآخرون أخطاء وإشعارات.
0
geek-merlin