ホームページ >バックエンド開発 >PHPチュートリアル >さまざまな方法を使用してエラー レポートを記録する方法の概要

さまざまな方法を使用してエラー レポートを記録する方法の概要

WBOY
WBOYオリジナル
2021-11-01 17:30:513658ブラウズ

前回の記事では、PHPのエラーの種類とエラーレベルを詳しく紹介した「PHPのエラーの種類とエラーレベルを理解する」をご紹介しました。 PHP でのエラー ログの設定と使用方法を見てみましょう。みんなが助けてくれることを願っています!

さまざまな方法を使用してエラー レポートを記録する方法の概要

前回の記事では、PHP エラーの例外処理、エラーの種類、エラー レベルについて紹介しましたが、次に、PHP のエラー ログの構成とその方法を紹介します。これを使って。 PHP 開発者の場合、プロジェクトが使用開始されたら、構成ファイル php.ini の display_errors オプションをすぐにオフにして、これらのエラーによってパス、データベース接続、データ テーブル、その他の情報が公開されるのを避ける必要があります。 。

使用されるプロジェクトでは必ずエラーが発生します。一部のエラー レポートは開発者にとって役立ちます。現時点では、別のテキスト ファイルを通じてエラー レポートを記録できます。このようにして、開発者はシステムに問題があるかどうかをより簡単に確認できます。 PHP 設定ファイルで log_errors を有効にすると、プログラム内のエラー レポートをエラー ログに書き込むことができます。

このエラー レポートは、サーバーのログ ファイルに自動的に記録されます。システムの syslog、つまりシステム ログに送信することもできます。次に、このようなエラー処理を実装する方法を見てみましょう。

#ファイルを指定してエラー レポートを記録する

ターゲット ファイルを使用してエラー レポート ログを記録する場合は、必要なのは、指定されたファイルの場所がドキュメントのルート ディレクトリの外にある必要があるということです。この場合、攻撃される可能性は低く、指定されたファイルには特定のアクセス許可が必要です。まず、

php をターゲットにするために必要なものを見てみましょう。ini の構成ディレクティブを変更する方法:

  • log_errors = On<strong></strong>; ログ ステートメントを記録する場所を決定します

  • log_errors_max_len = 1024<strong></strong> ;各ログ エントリの最大長を設定します

  • error_reporting = E_ALL<strong> </strong>;発生したすべてのエラーは PHP

  • に報告されます#display_errors = Off<strong></strong> ;前のコマンドで定義されたルールを満たすすべてのエラー レポートを表示しません

  • ##error_log = /usr/local/error.log<strong> ;生成されたエラー レポートが書き込まれるログ ファイルの場所を指定します。 </strong>

    ##php を変更した後。 ini ファイルを上記のように設定し、設定が成功した後、PHP スクリプト ファイルを実行すると、エラー レポートはブラウザに表示されなくなります。このとき、エラー レポートは、設定したターゲット ファイル (エラー ログ) に表示されます。 。

さらに、
error_reporting

で定義されたエラーはこのターゲット ファイルに記録でき、エラー情報は # を通じてターゲット ファイルに配置できることに注意してください。 ##error_log()

関数: サーバーまたはこのターゲット ファイルのエラー ログ。 error_log()
関数の構文形式は次のとおりです:

error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] ) : bool
注意すべき点は次のとおりです:

$message
は、記録する必要があるエラー メッセージを表します。

$destination

は、エラー メッセージの送信先である宛先を表します。その意味は上で説明されており、$message_type パラメータによって決定されます; $extra_headers は追加のヘッダーを表します。 $message_type が 1 に設定されている場合に使用されます。このメッセージ タイプは、mail() の同じ組み込み関数を使用します。 $message_type は、設定エラーが送信される場所 を示します。考えられるメッセージ タイプは次のとおりです。

    0
  • : (デフォルト値)

    $message を PHP システム ログに送信します。オペレーティング システムのログを使用します。構成ファイルでどのような error_log が設定されているかに応じて、ログ記録メカニズムまたはファイル;

  • 1

    : $message を電子メール アドレスに送信します。 $destination パラメータによって設定されます。 4 番目のパラメーター $extra_headers は、このタイプでのみ使用されます。(2 は非推奨になりました)

  • 3:$message が送信されます。 $destination にあるファイル。文字 $message はデフォルトでは改行として扱われません;

  • 4: $message を SAPI ログ ハンドラーに直接送信します。 。

次に、Mysql データベースへのログインを例に説明しますが、ログインに失敗するとエラー情報が記録されます。例は次のとおりです。

<?php
    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");
    if (!$link) {
        error_log(&#39;Mysql 数据库连接失败!&#39;,0);
        exit();
    }
?>

Oracle データベースへのログインの問題を例にとると、この関数の使用例は次のとおりです。

<?php
if(!Ora_Logon($username, $password)){
error_log("Oracle数据库不可用!", 0); //将错误消息写入到操作系统日志中
 }
if(!($foo=allocate_new_foo()){
 error_log("不行!", 1, ". mydomain.com"); //发送到管理员邮箱中
 }
error_log("不行!", 2, "localhost:5000"); //发送到本机对应5000端口的服务器中
error_log("不行!", 3, "/usr/local/errors.log"); //发送到指定的文件中
?>

代码运行之后就会在php.ini 配置文件中 error_log 一项所设置的目录中生成对应的错误日志文件。接下来我们看一下错误信息记录到操作系统的日志里是什么情况。

通过系统日志记录错误报告

上文中我们讲到了将使用目标文件来记录错误报告日志,接下来我们就来看一下将错误信息放到操作系统的日志里面,这是可以实现的,其中不同的操作系统,它们的日志管理也是不一样的,下面我们都是使用常见的windows举例,Windows 上错误将发送到事件日志里,可以通过事件查看器来查看。

通过什么样的方法才能够在操作系统的日志里有错误信息呢?这时候我们可以通过php.ini 配置文件中 error_log,接下来我们看一下应该怎样修改php.ini中的配置文件。

修改error_reporting  =  E_ALL用来报告所发生的每个错误;修改display_errors = Off 用来不显示满足上条指令所定义规则的所有错误报告;修改log_errors = On用于决定日志语句记录的位置;修改log_errors_max_len = 1024用于设置每个日志项的最大长度;修改error_log = syslog用于指定产生的错误报告写入操作系统的日志里 。

虽然通过前面介绍的 error_log() 函数,可以向 syslog 中发送定制的消息,想要实现将错误信息放到操作系统的日志里面,我们还需要三个函数的帮助,下面我们就来简单的介绍一下:

  • <strong>openlog()</strong>函数

该函数是用来打开连接的,用于向系统中写入日志信息做的准备。并且每个日志的消息中都有它的一个参数是字符串形式的。

  • <strong>syslog()</strong>函数

该函数拥有两个参数,它的作用是用来给系统中的日志给一个特定消息,第一个参数就是用来设置这个消息的优先级,第二个参数即使提供字符串,这个字符串就是这个特定的消息。

  • <strong>closelog()</strong>函数

该函数就是用来关闭连接的,这个连接就是上文中openlog() 函数打开的。

那么接下来我们通过示例来看一下实际操作吧,示例如下:

<?php
    openlog("PHP中文网", LOG_PID, LOG_USER);
    syslog(LOG_WARNING, "向 syslog 中发送定时消息,发送时间:".date("Y/m/d H:i:s"));
    closelog();
?>

以windows系统为例,打开“此电脑”右键选择“管理”选项,进入计算机管理界面,找到图示中应用程序的选项,就能够看到我们自己定制的警告信息了。如下所示:

さまざまな方法を使用してエラー レポートを記録する方法の概要

さまざまな方法を使用してエラー レポートを記録する方法の概要

其中我们需要注意的是:

你所使用的Web服务器环境决定了是使用指定文件还是使用syslog记录错误日志。可以控制服务器的话就可以利用解析工具来查看和分析日志,推荐使用syslog 激励错误日志,网站在共享服务器的虚拟主机中运行,推荐使用单独的文本文件记录错误日志了。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

以上がさまざまな方法を使用してエラー レポートを記録する方法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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