ホームページ > バックエンド開発 > PHPチュートリアル > PHP エラー報告設定が有効になっていませんか?

PHP エラー報告設定が有効になっていませんか?

WBOY
リリース: 2016-06-23 13:52:14
オリジナル
1623 人が閲覧しました

このような問題が発生しました。マシン (MAX OS、PHP5.4.24) にインストールし、設定ファイルでエラー報告をオンにしました (display_errors = On; and error_reporting = E_ALL & ~E_NOTICES)。プログラムでエラー報告をオフにしたいのですが、
ini_set('display_errors', 0);

効果がありません。上記 2 つの機能を使用した場合でも、必ず致命的なエラーが報告されます。ブロックする方法はないのでしょうか?設定ファイルをOFFに変更する必要があるのでしょうか?
そこでマニュアルを見てみました。本当にこんなことわざがあります:
注:
display_errors は実行時に (ini_set() を使用して) 設定することもできますが、スクリプトで致命的なエラーが発生した場合、実行時設定は無効になります。この場合、期待された操作が実行されないためです。

上記の文をどう理解しますか?それはプログラムに致命的なエラーがあり、ini_set が無効であることを意味しますか?エラーレポートが表示されるかどうかは、ini 設定に完全に依存します。ということは、レポートを一時的に変更することは不可能なのでしょうか?構成を変更してサービスを再起動することのみが可能です。 。 。 。


教えてください。 。




ディスカッションへの返信 (解決策)

エラーが ini_set('display_errors', 0); より前に表示される場合は、エラー メッセージが出力される必要があり、致命的なエラーはほとんどが構文エラーになります。実行前に必ず表示されます


エラー メッセージをログ ファイルに送信できます
開発環境と実行環境で異なる php.ini を使用することもできます

ini_set('display_errors','off');
error_reporting(0) ) ;

ページの先頭に置きます。


エラーが ini_set('display_errors', 0); の前に表示される場合は、エラー メッセージを出力する必要があります

そして、致命的なエラーはほとんどが構文エラーであり、実行前に必ず表示されます

エラー メッセージを次の場所に置くことができますログ ファイル
開発環境と実行環境で異なる php.ini を使用することもできます



ただしモデレーター、私の会社のサーバーのエラー レポートは設定ファイルで開かれていますが、致命的なエラーが発生した場合はいいえエラーが報告される前に、プログラムの先頭で ini_set('display_errors', 0); を使用する必要があります。これはなぜですか?


display_errors はエラーを表示することを意味します
これをオフにすると、エラーはどのように表示されますか?
エラー メッセージをファイルにリダイレクトしても、display_errors をオフにできるという意味ではなく、出力デバイスが変更されるだけです

関数にパラメータがない、除数が 0 であるなど、一部のエラーは実行するまで表示されません...


display_errors はエラーを表示することを意味します
オフにすると、エラーはどのように表示されますか?

エラー メッセージをファイルにリダイレクトしても、display_errors をオフにできるという意味ではなく、出力デバイスが変更されるだけです

関数にパラメータがない、除数が 0 であるなど、一部のエラーは実行するまで表示されません...


はい、display_errors が 0 に設定されている場合、エラーは報告されないはずですが、元の投稿でまだ報告されると言いましたよね?

あなた自身が混乱していますか?
display_errors = On
ここで発生したエラーは報告されます


ini_set('display_errors', 0);

ここで発生したエラーは報告されません



あなたは自分で混乱していませんか?
display_errors = On

ここで発生したエラーは報告されます


ini_set('display_errors', 0);

ここで発生したエラーは報告されません




私の式はそうではないはずです直接十分です。
はい このように、PHP 設定ファイルでオンかオフかに関係なく、
プログラムが ini_set 関数または error_reporting 関数を通じてエラー報告を迅速に変更またはブロックできることを願っています。全て無効となります。しかし、会社のサーバーでは効果があることがわかりました。以上です

余計なことはしないでください
1. エラー表示をオフにすると、構文解析フェーズで発生したエラーが HTTP 500 エラーに直結します
なので、少なくともエラー表示はオンにする必要がありますエラー ログにリダイレクトします 2. すべての実行 この期間中に生成されたエラーは、set_error_handler 関数を通じてカスタム エラー ハンドラーにリダイレクトできます

カスタム エラー ハンドラーでは、必要に応じて必要なアクションを実現できます

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート