データベース接続を確立しようとしたときに、定義したカスタム エラー メッセージが表示されないという問題が発生しました。接続に失敗した場合に表示されます。また、ユーザーの視点からエラー メッセージを抑制する方法も探しています。
PHP 8.1 以降、mysqli 拡張機能は、エラーが発生した場合に自動的に例外をスローするようになりました。
定義したようなカスタム エラー メッセージは、PHP の以前のバージョンで行われていたような手動エラー処理の必要性がなくなりました。エラー処理。 PDO と mysqli はどちらも、他の PHP コマンドと同様に、自動的にエラーを発生させる機能があります。したがって、if (!$conn) セグメントで試みたような手動でのエラーのチェックは廃止されました。
エラー メッセージがユーザーに届くのを防ぐためこのオプションを 0 に設定すると、すべてのエラー出力を抑制できます。これは、php.ini ファイルまたは PHP コードで直接設定できます。
<code class="php">ini_set('display_errors', 0);</code>
不可解なエラー メッセージを表示する代わりに、次のようにすることをお勧めします。サイト訪問者にわかりやすいエラー ページを表示します。これは、以下のようなエラー ハンドラーを設定することで実現できます。これは、すべての回復不可能なエラーをキャッチします。
<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>
特別に処理する必要がある場合データベース接続エラーがある場合は、通常の接続コードとは別に、try-catch ブロックでラップされた別の接続テスト スクリプトを使用できます。
セキュリティを強化するには、PHP バージョンを更新してください。 8.2 以降にアップグレードすると、データベースのパスワードがスタック トレースに表示されなくなります。
以上がPHP 8.1 にアップグレードした後、mysqli_connect エラーでカスタム エラー メッセージが表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。