【问题标题】:Where are PHP errors logged to if the error_log directive simply says "error_log"?如果 error_log 指令只是说“error_log”,那么 PHP 错误会记录到哪里?
【发布时间】:2014-06-10 17:58:20
【问题描述】:

我运行了phpinfo()error_log 指令只写了error_log。那是指什么文件?即 error_log 的完整路径是什么?

【问题讨论】:

标签: php error-log


【解决方案1】:

Windows 10IIS 10.0.18362.1 上,我在文件php\php.ini 中设置了这个:

error_log = "C:\tmp\php_errors.log"

error_log = C:\tmp\php_errors.log

error_log = \tmp\php_errors.log

phpinfo() 显示:

error_log C:\tmp\php_errors.log 或 \tmp\php_errors.log

有时直接,但总是在iisreset 之后(回收应用程序池)。

这是保存文件的位置。

不带pad:error_log = php_errors.log会写在出错的地方。已经提过了。

【讨论】:

  • 你说的“没有pad”是什么意思?你能详细说明一下吗?
【解决方案2】:

打开你的 php.ini 文件。

对照error_log检查路径。

【讨论】:

  • 这不应该被否决,因为这是预期的正确用法。人们应该按照他们预期的方式使用提供的工具,并且只有在无法访问或未提供解决方案时才旋转他们自己的解决方案。这个网站上有太多人认为仅仅因为它没有解决他们的具体问题(以及所有相关但未报告的问题),它就会自动出错。这没有错,如果它不起作用,那么你的服务器设置不好,这是你真正的问题。
  • 我想补充一点,日志也可以在 apache.conf 或 vhost.conf 中定义。
  • 我同意投反对票,原因很简单,因为它没有清楚地解释任何事情。
  • 你是什么意思“根据error_log检查路径。”(似乎难以理解)?你能详细说明吗?请通过editing (changing) your answer 回复,而不是在 cmets 中(without "Edit:"、"Update:" 或类似的 - 答案应该看起来像是今天写的)。
【解决方案3】:

当该值仅显示error_log(或php.ini 文件中的error_log = error_log)时,这意味着错误将被写入发生错误的同一目录中名为error_log 的文件中。

因此,如果您在 /home/user/public_html/ 中有一个名为 index.php 的文件引发错误,则错误将被写入:/home/user/public_html /error_log.

如果您在 /home/user/public_html/admin/images/ 中有名为 resize.php 的文件引发错误,则错误将被写入:/home/user /public_html/admin/images/error_log


来源:Display and log errors for PHP

【讨论】:

    【解决方案4】:

    引用from the documentation

    error_log 字符串

    脚本错误所在的文件名 记录。该文件应该可由 Web 服务器的用户写入。如果 使用特殊值 syslog,将错误发送到系统记录器 反而。在 Unix 上,这意味着 syslog(3),而在 Windows NT 上,这意味着 事件日志。 Windows 95 不支持系统记录器。另请参阅: 系统日志()。如果未设置此指令,则会将错误发送到 SAPI 错误记录器。例如,它是 Apache 或 stderr 中的错误日志 命令行界面。

    因此,当未设置该值(这是默认值)时,它将被发送到父错误记录器,即 apache(如果通过它运行)或stderr,如果您在命令行上运行脚本。

    如果您通过 apache 使用脚本,则必须查看 apache 错误日志,通常在 /var/log/apache/var/log/httpd,具体取决于您的发行版。您可以检查 apache 配置文件的确切位置。

    编辑:

    我刚刚注意到我误读了你的问题,我猜你的意思是error_log 的实际值是error_log

    我刚刚做了一些测试。当我将error_log 设置为php_errors.log 之类的值时,PHP 仍然会将错误消息写入 apache 错误日志。它的行为就像值是空的一样。当我将值设置为完整路径(例如/tmp/php_errors.log)时,它会将错误写入指定文件。

    所以我猜在你的情况下它会将错误写入 apache 错误日志文件。

    当然你可以设置自己的日志文件添加

    ini_set("error_log", "/tmp/php_errors.log");
    

    到您需要它的 PHP 文件(如果它没有被管理员禁用)。

    【讨论】:

    • /var/log 中没有 /apache。但是/usr/local/apache/logs 中有一个error_log,但它似乎没有显示任何PHP 错误。当我运行我的 PHP 页面时,我得到一个空白屏幕,我想知道语法错误。 display_errorsphp.ini 中被关闭。
    • 你应该可以在你的 php 文件中打开display_errors。只需在开头添加ini_set("display_errors", 1);即可。
    • 我相信ini_set("display_errors", 1); 告诉 PHP 通过输出 HTML 将错误消息回显到屏幕。
    • 另一个位置是/var/log/apache2(额外的“2”)(在fairly standard LAMP installation 上观察到Ubuntu MATE 20.04(Focal Fossa))。
    猜你喜欢
    • 2016-01-24
    • 2016-03-16
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2017-08-25
    • 2018-11-08
    相关资源
    最近更新 更多