Mengapa Mesej Ralat Tersuai Saya Tidak Dipaparkan dalam mysqli_connect Kegagalan Selepas Menaik taraf kepada PHP 8.1?

Patricia Arquette
Lepaskan: 2024-10-26 20:38:02
asal
249 orang telah melayarinya

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

Menyiasat Mesej Ralat Tersuai Tersembunyi dalam Kegagalan mysqli_connect

Dalam percubaan untuk mewujudkan sambungan pangkalan data, anda menghadapi masalah di mana mesej ralat tersuai yang anda tentukan tidak dipaparkan apabila sambungan gagal. Anda juga sedang mencari kaedah untuk menyekat mesej ralat daripada pandangan pengguna.

Sifat Mesej Ralat

Bermula dengan PHP 8.1, sambungan mysqli kini secara automatik membuang pengecualian sekiranya berlaku ralat, menghapuskan keperluan untuk pengendalian ralat manual seperti yang dilakukan dalam versi PHP yang lebih awal.

Rasional Di Sebalik Penindasan Ralat

Mesej ralat tersuai, seperti yang anda takrifkan, tidak lagi disyorkan untuk pengendalian ralat. Kedua-dua PDO dan mysqli mempunyai keupayaan untuk menimbulkan ralat secara automatik, sama seperti arahan PHP yang lain. Oleh itu, menyemak ralat secara manual, seperti yang anda cuba lakukan dengan segmen if (!$conn), adalah usang.

Mengelakkan Pendedahan Ralat kepada Pengguna

Untuk menghalang mesej ralat daripada sampai kepada pengguna , anda harus menggunakan pilihan konfigurasi display_errors, yang boleh ditetapkan kepada 0 untuk menyekat semua output ralat. Ini boleh dikonfigurasikan dalam fail php.ini atau terus dalam kod PHP anda:

<code class="php">ini_set('display_errors', 0);</code>
Salin selepas log masuk

Menyediakan Halaman Ralat Mesra Pengguna

Daripada memaparkan mesej ralat samar, adalah dinasihatkan untuk membentangkan halaman ralat mesra pengguna kepada pelawat tapak. Ini boleh dicapai dengan menyediakan pengendali ralat, seperti yang di bawah, yang akan menangkap semua ralat yang tidak boleh dipulihkan:

<code class="php">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.";
    }
});</code>
Salin selepas log masuk

Mengendalikan Ralat Sambungan Pangkalan Data Secara Berasingan

Jika anda perlu mengendalikan secara khusus ralat sambungan pangkalan data, anda boleh menggunakan skrip ujian sambungan berasingan yang dibalut dalam blok cuba-tangkap, berasingan daripada kod sambungan biasa anda.

Melindungi Bukti Kelayakan Sambungan

Untuk keselamatan yang dipertingkat, kemas kini versi PHP anda kepada 8.2 atau lebih baru, yang mengaburkan kata laluan pangkalan data daripada dipaparkan dalam surih tindanan.

Atas ialah kandungan terperinci Mengapa Mesej Ralat Tersuai Saya Tidak Dipaparkan dalam mysqli_connect Kegagalan Selepas Menaik taraf kepada 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