"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا لا تظهر رسائل الخطأ المخصصة في حالات فشل mysqli_connect بعد الترقية إلى PHP 8.1؟

لماذا لا تظهر رسائل الخطأ المخصصة في حالات فشل mysqli_connect بعد الترقية إلى PHP 8.1؟

تم النشر بتاريخ 2024-11-08
تصفح:893

Why Are My Custom Error Messages Not Displaying in mysqli_connect Failures After Upgrading to PHP 8.1?

التحقيق في رسالة الخطأ المخصصة المخفية في حالات فشل mysqli_connect

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

طبيعة رسالة الخطأ

بدءًا من PHP 8.1، يقوم ملحق mysqli الآن تلقائيًا بطرح الاستثناءات في حالة حدوث خطأ خطأ، مما يلغي الحاجة إلى معالجة الأخطاء يدويًا كما حدث في الإصدارات السابقة من PHP.

الأساس المنطقي وراء قمع الأخطاء

لم يعد يوصى برسائل الخطأ المخصصة، مثل تلك التي حددتها، معالجة الأخطاء. يتمتع كل من PDO وmysqli بالقدرة على إظهار الأخطاء تلقائيًا، تمامًا مثل أي أمر PHP آخر. ولذلك، فإن التحقق يدويًا من الأخطاء، كما حاولت القيام به مع مقطع if (!$conn)، أصبح قديمًا.

تجنب تعرض المستخدمين للأخطاء

لمنع رسائل الخطأ من الوصول إلى المستخدم ، يجب عليك استخدام خيار تكوين Display_errors، والذي يمكن ضبطه على 0 لمنع كل الأخطاء الناتجة. يمكن تكوين ذلك في ملف php.ini أو مباشرة في كود PHP الخاص بك:

ini_set('display_errors', 0);

توفير صفحة خطأ سهلة الاستخدام

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

set_exception_handler(function ($e)
{
    error_log($e);
    http_response_code(500);
    if (ini_get('display_errors')) {
        echo $e;
    } else {
        echo "<h1>500 Internal Server Error</h1>\nAn internal server error has been occurred.<br>\nPlease try again later.";
    }
});

معالجة أخطاء اتصال قاعدة البيانات بشكل منفصل

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

حماية بيانات اعتماد الاتصال

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

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3