問題の理解:
提供されたコードでは、mysqli_connect を使用してデータベースに接続しようとし、場合に備えてカスタム エラー メッセージを出力します。接続が失敗します。ただし、PHP 8.1 以降ではエラーの処理方法が異なり、手動処理を必要とする代わりに例外が発生します。
隠されたカスタム エラー メッセージ:
PHP 8.1 以降、mysqli_connect は例外を生成します。エラーが発生した場合、コードで接続ステータスを手動で確認する必要がなくなりました。さらに、カスタム エラー メッセージをユーザーに表示しないようにする必要があります。代わりに、PHP のエラー処理メカニズムを使用するか、一般的なエラー ページを提供します。
エラーの表示構成:
PHP がユーザーにエラー メッセージを表示しないようにするには、「display_errors」を設定します。 ' php.ini のオプションまたはコードを使用して、 0:
ini_set('display_errors', 0);
サイト ユーザー用エラー ハンドラー:
ユーザー フレンドリーなエラー ページの場合は、エラーをログに記録し、HTTP 500 を設定するエラー ハンドラーを使用します。ステータス コードを表示し、一般的なエラー メッセージを表示するか、エラーにリダイレクトします。
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."; } });
接続エラーを個別に処理する:
ユーザー資格情報のテストなど、接続エラーを具体的に処理したい場合は、次の try..catch ブロックを使用します。専用の接続テスト コード:
try { $conn = mysqli_connect(...); } catch (mysqli_sql_exception $e) { // Handle connection error }
接続の非表示資格情報:
PHP 8.2 以降では、セキュリティを向上させるためにスタック トレースからデータベースのパスワードが非表示になります。
以上がPHP 8.1 でカスタム MySQLi 接続エラー メッセージが表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。