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);
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."; } });
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 }
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!