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

PHP 8.1 にアップグレードした後、mysqli_connect エラーでカスタム エラー メッセージが表示されないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-26 20:38:02258ブラウズ

Why Are My Custom Error Messages Not Displaying in mysqli_connect Failures After Upgrading to PHP 8.1?

mysqli_connect エラーでの隠されたカスタム エラー メッセージの調査

データベース接続を確立しようとしたときに、定義したカスタム エラー メッセージが表示されないという問題が発生しました。接続に失敗した場合に表示されます。また、ユーザーの視点からエラー メッセージを抑制する方法も探しています。

エラー メッセージの性質

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 サイトの他の関連記事を参照してください。

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