Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Mesej Ralat PHP Tersuai Saya Tidak Muncul Apabila mysqli_connect Gagal?

Mengapa Mesej Ralat PHP Tersuai Saya Tidak Muncul Apabila mysqli_connect Gagal?

Barbara Streisand
Barbara Streisandasal
2024-10-26 14:51:30208semak imbas

Why Doesn't My Custom PHP Error Message Appear When mysqli_connect Fails?

Mengapa PHP Tidak Memaparkan Mesej Ralat Tersuai Saya Apabila mysqli_connect Gagal?

Memahami Mekanisme Pengesanan Ralat< ;/h3>

Pada masa lalu, sambungan mysql PHP memerlukan pengendalian ralat manual. Walau bagaimanapun, sambungan mysqli yang diperkenalkan dalam PHP 8.1 kini secara automatik mencetuskan pengecualian apabila menghadapi ralat, menghapuskan keperluan untuk pengesanan ralat manual.

Kekeliruan Mesej Ralat Tersuai

Anda kod termasuk blok if (!$conn) yang cuba mengeluarkan mesej ralat tersuai. Pendekatan ini sudah lapuk. mysqli sememangnya membuang ralat, yang sepatutnya dikendalikan secara automatik.

Menyembunyikan Mesej Ralat daripada Pengguna

Untuk menyembunyikan mesej ralat daripada pelawat tapak, anda harus menggunakan konfigurasi display_errors pilihan. Menetapkannya kepada 0 akan menghalang PHP daripada memaparkan sebarang ralat. Anda boleh menetapkan pilihan ini dalam php.ini atau dalam kod PHP menggunakan ini_set('display_errors', 0).

Memaparkan Halaman Ralat Mesra Pengguna

Walaupun penting untuk menyembunyikan ralat sistem daripada pengguna, anda mungkin mahu memaparkan halaman ralat mesra pengguna. Ini boleh dicapai menggunakan pengendali ralat seperti:

<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>
              An internal server error has occurred.<br>
              Please try again later.";
    }
});</code>

Pengendali ini merekodkan ralat, menetapkan kod status HTTP 500 dan memaparkan mesej ralat generik jika display_errors ditetapkan kepada 0.

Mengendalikan Ralat Sambungan

Dalam senario tertentu, anda mungkin perlu mengendalikan ralat sambungan secara eksplisit. Ini boleh dilakukan menggunakan blok cuba-tangkap. Walau bagaimanapun, pengendalian sedemikian hendaklah dihadkan kepada kes di mana senario ralat tertentu memerlukan tindakan alternatif.

Menyembunyikan Maklumat Sensitif

Jika anda bimbang tentang maklumat sensitif yang muncul dalam surih tindanan, pertimbangkan untuk meningkatkan kepada PHP 8.2 atau lebih baharu, yang menyembunyikan kata laluan pangkalan data daripada surih tindanan.

Atas ialah kandungan terperinci Mengapa Mesej Ralat PHP Tersuai Saya Tidak Muncul Apabila mysqli_connect Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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