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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-30 17:35:14512ブラウズ

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

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

これまで、PHP は MySQL 拡張機能を使用してデータベースに接続していましたが、これには手動のエラー処理が必要でした。 。ただし、mysqli の導入により、エラーが自動的にスローされるため、if (!$conn) などの手動チェックが不要になります。

PHP 8.1 以降では、mysqli はエラーに対して例外をスローします。したがって、コード内のカスタム エラー メッセージは表示されません。

接続エラーの処理方法

推奨されるアプローチは、データベース接続エラーを処理するために、次のブロックに依存するのではなく、try-catch ブロックを使用することです。手動チェック:

try {
    $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
} catch (Exception $e) {
    // Handle the error here
}

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

ユーザーからエラー メッセージを非表示にするには、 php.ini で、または ini_set() を使用して、display_errors を 0 に設定します:

ini_set('display_errors', 0);

ユーザーフレンドリーなエラー ページを表示する方法

エラー ハンドラーを使用して、特定のエラー メッセージ:

set_exception_handler(function ($e)
{
    // Log the error
    error_log($e);

    // Set HTTP status code to 500
    http_response_code(500);

    // Check display_errors setting
    if (ini_get('display_errors')) {
        echo $e;
    } else {
        echo "<h1>500 Internal Server Error</h1>An internal server error has occurred. Please try again later.";
    }
});

接続をテストする方法資格情報

try-catch を使用した別の接続テストを使用して、インストール スクリプトまたはバックアップ シナリオの資格情報をテストします。

try {
    $conn = mysqli_connect($dbServerName, $dbUsername, $dbPassword, $dbName);
} catch (Exception $e) {
    // Handle the error
}

接続資格情報を非表示にする方法

PHP 8.2 およびその後、データベースのパスワードはスタック トレースから隠されます。

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

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