我不知道有没有。但是内置在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