ホームページ >バックエンド開発 >PHPチュートリアル >mysqli_connect が失敗したときにカスタム PHP エラー メッセージが表示されないのはなぜですか?

mysqli_connect が失敗したときにカスタム PHP エラー メッセージが表示されないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-26 14:51:30207ブラウズ

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

mysqli_connect が失敗したときに PHP がカスタム エラー メッセージを表示しないのはなぜですか?

エラー検出メカニズムを理解する< ;/h3>

以前は、PHP の mysql 拡張機能では手動のエラー処理が必要でした。ただし、PHP 8.1 で導入された mysqli 拡張機能は、エラーが発生したときに自動的に例外をトリガーするため、手動でエラーを検出する必要がなくなります。

カスタム エラー メッセージの混乱

コードには、カスタム エラー メッセージを出力しようとする if (!$conn) ブロックが含まれています。このアプローチは時代遅れです。 mysqli は本質的にエラーをスローしますが、これは自動的に処理される必要があります。

ユーザーからのエラー メッセージを非表示にする

サイト訪問者からのエラー メッセージを非表示にするには、display_errors 設定を使用する必要があります。オプション。これを 0 に設定すると、PHP はエラーを表示しなくなります。このオプションは、php.ini で設定するか、ini_set('display_errors', 0) を使用して PHP コードで設定できます。

ユーザー フレンドリーなエラー ページの表示

システム エラーをユーザーから隠すことは不可欠ですが、ユーザー フレンドリーなエラー ページを表示することもできます。これは、次のようなエラー ハンドラーを使用して実現できます。

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

このハンドラーはエラーをログに記録し、HTTP 500 ステータス コードを設定し、display_errors が 0 に設定されている場合は一般的なエラー メッセージを表示します。

接続エラーの処理

特定のシナリオでは、接続エラーを明示的に処理する必要がある場合があります。これは、try-catch ブロックを使用して実行できます。ただし、そのような処理は、特定のエラー シナリオで代替アクションが必要な場合に限定する必要があります。

gt;機密情報の非表示

機密情報が表示されることが心配な場合は、スタック トレースの場合は、スタック トレースからデータベースのパスワードを非表示にする PHP 8.2 以降へのアップグレードを検討してください。

以上がmysqli_connect が失敗したときにカスタム PHP エラー メッセージが表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。