データベース接続を確立しようとしたときに、定義したカスタム エラー メッセージが表示されないという問題が発生しました。接続に失敗した場合に表示されます。また、ユーザーの視点からエラー メッセージを抑制する方法も探しています。
PHP 8.1 以降、mysqli 拡張機能は、エラーが発生した場合に自動的に例外をスローするようになりました。これにより、PHP の以前のバージョンで行われていたような手動エラー処理の必要がなくなります。
定義したようなカスタム エラー メッセージは、エラー処理には推奨されなくなりました。 PDO と mysqli はどちらも、他の PHP コマンドと同様に、自動的にエラーを発生させる機能があります。したがって、if (!$conn) セグメントで試みたような手動でのエラー チェックは廃止されました。
エラー メッセージがユーザーに届くのを防ぐにはこのオプションを 0 に設定すると、すべてのエラー出力を抑制できます。これは、php.ini ファイルで、または PHP コードで直接設定できます:
ini_set('display_errors', 0);
不可解なエラー メッセージを表示する代わりに、サイト訪問者にわかりやすいエラー ページを表示することをお勧めします。これは、すべての回復不可能なエラーをキャッチする以下のようなエラー ハンドラーを設定することで実現できます:
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.";
}
});
データベース接続エラーを特別に処理する必要がある場合は、通常の接続テスト スクリプトとは別に、try-catch ブロックでラップされた個別の接続テスト スクリプトを使用できます。接続コード。
セキュリティを強化するには、PHP バージョンを 8.2 以降に更新してください。これにより、データベースがわかりにくくなります。パスワードがスタック トレースに表示されないようにします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3