什么是 PHP 内置服务器错误日志位置


What is the PHP built-in server error log location?

我不知道有没有。但是内置在Web服务器中的PHP是否也将其错误日志保存在文件中?用于尾随目的,例如在 Apache 中创建虚拟主机时。

我正在使用 Mac OS X。

默认情况下,内置的Web服务器不会在任何地方登录,因此您需要提供一个php.ini以便对其进行自定义。例如,如果您创建了一个名为 php.ini 的文件,其中包含以下内容:

error_log = /Users/me/test.log
log_errors = on
date.timezone = UTC

然后你可以像这样启动PHP的内置Web服务器:

php -S 127.0.0.1:8080 -c php.ini

并且 error_log() 调用将记录到您指定的文件中。

是的,PHP 具有内置的错误日志功能。PHP 会自动将错误记录到此文件中。

如果要记录错误,请使用函数 error_log()。

文件的位置会根据环境而变化。

例如,在 Ubuntu 12.04(精确穿山甲)中,它是

var/log/php_errors.log

在 XAMPP Windows 中,

'xampp'php'logs'php_errors.log

在 Mac OS X 中,

/var/log/apache2/php_errors.log

在macOS上使用PHP的内置服务器时,您需要在php.ini配置文件(php -i | grep php.ini)中指定error_log

如果您决定使用syslog(而不是日志文件),例如:

error_log = syslog

然后要转储日志,您可以在macOS上使用log命令,例如

log stream --predicate 'processImagePath contains "php"'

否则,请为错误日志使用一些特定的文件路径(例如 /usr/local/var/log/php-error.log )。

我主要了解 Linux,但 AFAIK 这在你可以运行 PHP 的任何系统上都是一样的。

我最近花了不合理的时间让Linux在2009年"过时"的Mac Mini上运行。我不知道有人如何容忍这种制造过时的行为。Android就是糟糕,躲在"基于Linux"的废话后面。我想知道需要多少律师才能弄清楚这一点?当然,GPL 并没有说任何关于硬件的事情!

多亏了他们,当移动设备在未来十年不可避免地取代笔记本电脑和台式机时,自由软件背后的思想的威胁将大部分被消除。他们应该将这种工程应用于消费者烟雾报警技术。

无论如何,够了。我将尝试回到这个主题,并教你如何做到这一点,为你提供将来完成类似不同任务的工具。就像那句老话说的,"授人以渔,就不能再卖给他鱼了"

我总是喜欢从man [command][command] --help 开始。如果--help-h 不起作用,请尝试传递无效输入。这通常会让它说话。在这一步要小心;阅读手册页几个小时很容易卡住。尽量不要忘记您可能承担的任何时间义务。

php --help

找到设置 ini 变量的选项:

-d foo[=bar]     Define INI entry foo with value 'bar'

阅读示例 php.ini ,我们找到了感兴趣的设置。

; error_reporting
;   Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
;   Development Value: E_ALL
;   Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
///
; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog

所有其他默认值看起来都不错,所以...让我们试试:

php -d error_reporting=E_ALL -d error_log=/desired/path/to/error.log -S 0.0.0.0:9999

您可能会注意到日志打印到标准错误。或者,您可以通过在上述命令的末尾添加 2> /path/to/error.log来重定向它。更简单,但是您不会了解从文件 php 设置值的-d选项.ini -c使用自定义文件,但您会了解输出重定向,我想说这是一个更重要的概念,有无数应用程序。

要更新macOS v10.13.5(High Sierra):这对我有用,无需更改任何PHP默认值。 只需使用

error_log('*** Notice this ***');

并尾部错误日志:

tail -f /var/log/apache2/error_log

如果您使用的是macOS或Ubuntu,则可以通过以下方式轻松查看错误日志:

tail -f /var/log/apache2/error_log

这将实时为您提供错误日志,或者您可以使用它,这将提供最后的错误日志条目:

tail /var/log/apache2/error_log