PHP set_error_handler() 関数の使用_PHP チュートリアル
プログラムを書くと必ず問題が発生します(問題が頻繁に発生します)。PHP でエラーが発生すると、エラー スクリプトの場所、行番号、および理由が表示されます。大したことではないと言う人も多い。実際、デバッグ段階では、これは実際には問題ではなく、エラー パスを示すことが必要だと思います。
しかし、一部の侵入者にとって、実際のパスが漏洩した場合の影響は想像を絶するものであり、実際、多くのサーバーがこの問題を抱えています。ネットワーク管理者の中には、PHP 設定ファイルの display_errors を Off に設定するだけで問題を解決する人もいます (私たちがそうしたようです) が、この方法はあまりにも消極的すぎると思います。
デバッグのためにエラー情報を返すために PHP が本当に必要になる場合があります。また、何か問題が発生した場合は、ユーザーに説明したり、別のページに移動したりする必要がある場合もあります。
それで、解決策は何でしょうか?
set_error_handler()
PHP は 4.1.0 以降、カスタム エラー処理ハンドラー用の関数 set_error_handler() を提供していますが、これについて知っているスクリプト作成者はほとんどいません。 set_error_handler 関数はエラー パスの漏洩を防ぐことができますが、もちろん他の関数もあります。
- はエラーをブロックするために使用できます。 エラーが発生すると、一部の情報がユーザーに公開され、ハッカーが Web サイトを攻撃するツールとなる可能性が非常に高くなります。 次に、ユーザーにあなたのレベルが非常に低いと感じさせます。
- エラー情報を書き留めて、本番環境の問題を時間内に発見できます。
- エラーが発生した場合、対応する処理を実行して、事前定義されたエラーページにジャンプして、より良いユーザーエクスペリエンスを提供できます。
- デバッグ ツールとして使用できます。場合によっては、運用環境で何かをデバッグする必要がありますが、それを使用しているユーザーに影響を与えたくない場合があります。
- 。 。 。 。
set_error_handler の使用法は次のとおりです:
リーリー今度は、カスタム エラー処理を使用して実際のパスを除外します。変数 $admin があるとします。これを使用して、訪問者が管理者であるかどうかを判断します (この判断は、IP またはログインしたユーザー ID によって行うことができます)
リーリーこのようにエラー処理関数がカスタマイズされていますが、このカスタム関数にエラー処理を引き継ぐにはどうすればよいでしょうか?
リーリーとても簡単です。このようにして、セキュリティとデバッグの利便性の間の矛盾をうまく解決できます。また、Web サイトのスタイルに合わせてエラー メッセージをより美しくすることも考えられます。
原作者は、私たちの同胞の注意を引くことを願って、注意が必要な2つの点を指摘しました:
- E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING はこのハンドルでは処理されません。つまり、最もオリジナルの方法で表示されます。ただし、これらのエラーはコンパイル エラーまたは PHP カーネル エラーによって発生するものであり、通常の状況では発生しません。
- set_error_handler()使用後はerror_reporting()が無効になります。つまり、すべてのエラー (上記のエラーを除く) は、処理のためにカスタム関数に渡されます。
最後に、原作者は別の例を挙げました(なんて真面目で責任感のある人なんだろう)
リーリー要約すると、set_error_handler の 3 つの使用法を次に示します。
れーれー
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











MySQL エラーを解決する方法: 列の数が値と一致しません。特定のコード例が必要です。MySQL データベースをデータ操作に使用すると、「Columncountdoesn'tmatchvaluecountatrow1」というエラー メッセージが表示されることがあります。列の数が値の数と一致しません。このエラーは通常、データを挿入し、指定された列の数が挿入された値の数と一致しないときに発生します。この記事では、具体的な回避策について説明し、コード例を示します。診る

MySQL エラーの解決方法: テーブル定義が間違っています。自動カラムは 1 つしか存在できず、キーとして定義する必要があります。具体的なコード例が必要です。近年、MySQL データベースはますます広く使用されていますが、使用中に、さまざまなエラー報告によく遭遇します。その中でよくあるエラーは、「テーブル定義が間違っています。自動列は 1 つしか存在できず、それをキーとして定義する必要があります。」です。このエラーは通常、テーブルを作成するときに発生するため、初心者にとっては頭の痛い問題かもしれません。この記事では、このエラーの理由を詳細に分析し、具体的な原因を示します。

mysql エラー 10060 の解決策には、MySQL サーバーが正常に実行されているかどうかの確認、ネットワーク接続の確認、ファイアウォール設定の確認、MySQL サーバー構成の確認、MySQL ユーザー権限の確認、ネットワーク構成の確認、最大接続数制限の確認が含まれます。 MySQL サーバーの名前を変更し、ホストの代わりに IP アドレスを使用して、MySQL サーバーに名前を付けて再起動します。詳細な紹介: 1. MySQL サーバーが正常に実行されているかどうかを確認します まず、MySQL サーバーが実行されていて、正しいポートをリッスンしていることなどを確認します。

http リクエスト エラーの理由の簡単な説明: 504GatewayTimeout: ネットワーク通信中、クライアントは HTTP リクエストを送信することでサーバーと対話します。ただし、リクエストの送信プロセス中にエラー メッセージが表示される場合があります。そのうちの 1 つは 504GatewayTimeout エラーです。この記事では、このエラーの原因と解決策について説明します。 504GatewayTimeout エラーとは何ですか?ゲートウェイタイムオ

http リクエスト エラー: SocketError の解決策 ネットワーク リクエストを行うときに、さまざまなエラーが発生することがよくありますが、その一般的な問題の 1 つが SocketError です。このエラーは、アプリケーションがサーバーとの接続を確立できない場合にスローされます。この記事では、SocketError の一般的な原因と解決策について説明します。まず、Socket とは何かを理解する必要があります。ソケットは、アプリケーションが次のことを可能にする通信プロトコルです。

Python を学習していて GUI アプリケーションを開発したい場合、PyQt5 は非常に良い選択です。これは、Python での PyQt ライブラリのバインドされたバージョンであり、Qt グラフィック ライブラリの呼び出しと開発が非常に便利になります。ただし、PyQt5 のインストール時に問題が発生する場合があります。このガイドでは、インストール エラーの問題を迅速に解決するためのいくつかの手順を説明し、具体的なコード例も添付します。 Python のバージョンが正しいことを確認してください PyQt5 は Python ベースのライブラリであるため、最初に

Unknowncolumn'column_name'in'whereclause' - MySQL エラーの解決方法: where 句の列が不明です。特定のコード例が必要です。 MySQL は広く使用されているリレーショナル データベース管理システムであり、構造化照会言語 (SQL) の使用をサポートしています。そしてデータの取得。ただし、MySQL を使用してクエリを実行すると、エラーが発生することがあります。よくあるエラーの 1 つは次のとおりです。

エラーは、開発者が MySQL クエリ ステートメントを作成するときによく遭遇する問題の 1 つです。よくあるエラーの 1 つは、「Incorrectsyntaxnear 'error_keyword'」 ('error_keyword' 付近の構文エラー) です。このエラー メッセージは非常に一般的で、MySQL クエリ ステートメントに構文エラーがあることを意味します。この記事では、この問題を解決する方法を詳しく説明し、具体的なコード例をいくつか示します。まず、見てみましょう
