Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Mesej Ralat PHP Tersuai Saya Tidak Muncul Apabila mysqli_connect Gagal?
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.
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.
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).
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.
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.
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!