Rumah > pangkalan data > tutorial mysql > Mengapa Mesej Ralat Sambungan MySQLi Tersuai Saya Tidak Dipaparkan dalam PHP 8.1?

Mengapa Mesej Ralat Sambungan MySQLi Tersuai Saya Tidak Dipaparkan dalam PHP 8.1?

Susan Sarandon
Lepaskan: 2024-11-26 11:56:10
asal
181 orang telah melayarinya

Why Aren't My Custom MySQLi Connection Error Messages Displaying in PHP 8.1 ?

Mengapa PHP Tidak Menunjukkan Mesej Ralat Tersuai Saya Apabila Mysqli_connect Gagal?

Memahami Isu:

Dalam anda kod yang disediakan, anda cuba menyambung ke pangkalan data menggunakan mysqli_connect dan mencetak mesej ralat tersuai sekiranya sambungan gagal. Walau bagaimanapun, PHP 8.1 dan kemudiannya mengendalikan ralat secara berbeza, menimbulkan pengecualian dan bukannya memerlukan pengendalian manual.

Mesej Ralat Tersuai Tersembunyi:

Bermula dalam PHP 8.1, mysqli_connect menjana pengecualian apabila ralat berlaku, bermakna kod anda tidak lagi perlu menyemak status sambungan secara manual. Selain itu, anda harus mengelak daripada memaparkan mesej ralat tersuai kepada pengguna. Sebaliknya, gunakan mekanisme pengendalian ralat PHP atau sediakan halaman ralat generik.

Konfigurasi Ralat Paparan:

Untuk menghalang PHP daripada memaparkan mesej ralat kepada pengguna, tetapkan 'display_errors ' pilihan dalam php.ini atau kod anda untuk 0:

ini_set('display_errors', 0);
Salin selepas log masuk

Pengendali Ralat untuk Pengguna Tapak:

Untuk halaman ralat mesra pengguna, gunakan pengendali ralat yang mencatat ralat, tetapkan HTTP 500 kod status, dan memaparkan mesej ralat generik atau ubah hala kepada ralat halaman.

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>
              An internal server error has been occurred.<br>
              Please try again later.";
    }
});
Salin selepas log masuk

Mengendalikan Ralat Sambungan Secara Berasingan:

Jika anda ingin mengendalikan ralat sambungan secara khusus, seperti menguji kelayakan pengguna, gunakan try..catch block in kod ujian sambungan khusus:

try {
    $conn = mysqli_connect(...);
} catch (mysqli_sql_exception $e) {
    // Handle connection error
}
Salin selepas log masuk

Menyembunyikan Sambungan Bukti kelayakan:

PHP 8.2 dan seterusnya menyembunyikan kata laluan pangkalan data daripada surih tindanan untuk keselamatan yang dipertingkatkan.

Atas ialah kandungan terperinci Mengapa Mesej Ralat Sambungan MySQLi Tersuai Saya Tidak Dipaparkan dalam PHP 8.1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan