代码之家  ›  专栏  ›  技术社区  ›  Mawg says reinstate Monica

PHP错误记录-我可以将站点的所有错误记录到一个文件中吗?

  •  2
  • Mawg says reinstate Monica  · 技术社区  · 14 年前

    在php.in i中,我可以设置变量“错误日志”,它当前设置为“错误日志”,在每个目录中管理一个该名称的文件。

    你知道吗…如果我将其设置为“public-html/error-log”-我只会得到一个错误日志文件吗?还有别的办法吗?我只想检查一个站点范围的错误文件,而不是每个子目录上的一个。

    对于奖励分数,每次在文件中添加新条目时,我可以给自己发送一封电子邮件吗?

    留给读者作为练习-我可以忽略一些不是真的“错误”吗?

    4 回复  |  直到 14 年前
        1
  •  1
  •   Michal Čihař    14 年前

    如果您在Apache下运行PHP,那么可以在 .htaccess 文件,因此每个站点甚至每个目录,请参见 http://php.net/manual/en/configuration.changes.php

        2
  •  1
  •   knittl    14 年前

    你可以用 set_error_handler 并将其设置为一个函数,该函数将其记录到一个文件中(如果愿意,可以忽略某些类型的错误),然后发送电子邮件

    function myErrorHandler($errno, $errstr, $errfile, $errline) {
      // check if we want to log the error
      // log the error
      // send the mail
    }
    
    set_error_handler('myErrorHandler');
    
        3
  •  1
  •   user213154    14 年前

    我认为答案是肯定的,那应该管用。

    就电子邮件而言, 针织物 给出了正确的答案,但存在风险。1您可能会以电子邮件泛滥而告终,2它可能会减慢页面传递速度,因为一些PHP中的电子邮件发送方法需要几秒钟的时间来返回对调用脚本的控制,如果尚未将其结果发送到客户端,这是一个问题。

    如果您需要电子邮件通知,您可以考虑另一种方法,例如cron运行的脚本,如果日志自上次运行以来已写入,则会向您发送电子邮件。这可以解决这两个问题,并且您可以通过脚本运行的频率控制电子邮件的最大速率。

        4
  •  0
  •   Marc B    14 年前

    为错误日志指定绝对路径,例如

    /var/logs/php.err
    

    在php.ini中,该文件将成为系统范围内默认的php错误日志文件。然后,如果需要以不同的方式记录特定区域,您可以通过将override error_log指令放入相应的虚拟主机/目录设置(例如,site.conf apach e files、.htaccess等)来记录每个服务器/每个目录。