ホームページ >バックエンド開発 >PHPチュートリアル >PHP でのエラーおよび例外ログの使用方法の詳細な説明
この記事では、PHP でのエラーと例外のログの使用法を主に紹介し、PHP でのエラーと例外の違いと、それに対応するログインの使用スキルを詳しく説明します。詳細は次のとおりです。 :
Nginx + PHP サービスのエラー ログというと、通常、Nginx のアクセス ログ、エラー ログ、PHP のエラー ログを思い浮かべます。非常に単純な質問のように見えますが、実際には、アプリケーションの構成とログの記録場所が関係します。apt-get を使用して ubuntu などのシステムにインストールする場合は、より適切な独自の構成ファイルが用意されています。さらに、実行中のアプリケーションの設定もログの方法と内容に影響します。
エラーと例外の違いエラーと例外については、簡単な例を使用して理解できます:
<?php try { 1 / 0; } catch (Exception $e) { echo "catched", PHP_EOL; }
この小さな例を実行すると、直接「PHP 警告: pision by zero.. 。" 間違い。理由は簡単です。これは例外ではなく論理エラーであるため、try では捕捉できないからです。同様に、変数が使用前に定義されていない場合は、キャプチャされずに警告が生成されます。
しかし、この問題は PHP7 ではいくつか変更されています。たとえば、上記の例では / を % に変更しました。PHP7 環境で実行すると、次のような別のプロンプトが表示されます:
PHP Fatal error: Uncaught pisionByZeroError。このヒントによると、catch の条件を変更すると:
<?php try { 1 / 0; } catch (pisionByZeroError $e) { echo "catched", PHP_EOL; }
このようにして、エラーは正常にキャプチャでき、catch が出力されます。
最初の例では、ExcepitonをErrorExceptionに変更すると正常にキャッチできるようになります。
PHP5 では剰余と除算が同じであるのに、PHP7 では除算が pisionByZeroError 問題ではない理由については (私のテスト環境は 7.0.4)、これはバグのはずです。
ログ記録PHP 自体には以下の設定可能なログがあります:
① php-fpm エラーログ (php-fpm.conf で設定され、php-fpm プロセスの起動と終了などを記録します)
② php-fpm スロー ログ (これも php-fpm.conf で設定され、遅い実行を記録します)③ php エラー ログ (php.ini で設定され、アプリケーション エラー ログを記録します)
さらに、Nginx には他に 2 つのオプションがあります 設定されたログ: アクセスそしてエラーログ。これらのログファイルは機能も記録内容も異なります。ただし、注意すべき点が 1 つあります。php-fpm でエラー ログの場所が設定されているが、そのログの場所が書き込み可能ではない場合 (php-fpm は起動時に確認するため、場所は設定中に正しい必要があります)、適切な設定条件 エラー ログは CGI に返され、nginx のエラー ログに書き込まれます。
したがって、問題が発生したときの一般的な検索方法は次のとおりです:
1. Nginx アクセス ログでリクエストのステータス コードを確認します。
2. PHP エラー ログでエラー レコードとスタック情報を確認します。3. -fpm ログに異常な再起動レコードはありますか (コアまたは拡張の問題がある場合にこれが発生します)
しかし、上記の状況では、言及されたプログラムによってスローされた例外のログ レコードがないこともわかります。その上。
厳密に言えば、例外はエラーではなくアプリケーションロジックの例外であり、合理的なプログラムロジックを通じて手動でトリガーできます。ただし、ほとんどの場合、データベースに接続できないことやフレームワークの不適切な使用によって引き起こされる例外など、例外も記録する必要があります。問題を特定してタイムリーに処理するためには、ログを使用する必要があります。
PHP は、エラーおよび例外処理メソッドをカスタマイズするための 2 つの関数を提供します:
① set_error_handler
② set_Exception_handler
そのため、すべての例外は set_Exception_handler 関数注入メソッドを通じてキャプチャおよび記録できます。
monolog は優れた例外記録ライブラリであり、PSR-3 標準にも基づいています。 Laravel と Symfony では例外を記録するためにデフォルトで使用されます。必要に応じて、独自のプロジェクトへの導入を検討することもできます。
要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。
関連する推奨事項:
phpUの賢者static キーワードと const キーワード
以上がPHP でのエラーおよび例外ログの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。