抑制用户可见的PHP错误消息,但不抑制错误日志消息


Suppress user-visible PHP error messages but not error log messages

我希望PHP仍然将它的小错误和致命错误发送到错误日志,但不向用户显示。一开始我以为我可以使用error_reporting(0);来抑制所有错误消息,句号,但这并不理想。我知道我也可以把所有的东西都放在尝试接球中,但这也不是很理想。对于常规错误,有没有像致命错误(例如register_shutdown_function())那样更自动的方法?

说到致命错误,我试着使用register_shutdown_function()来捕捉它们,正如这个SO答案中所建议的那样。当我这样做时,发现了致命错误,但error_get_last();总是空的。我还尝试使用debug_backtrace();来捕获错误消息。它确实包含了我想要的关于致命错误的信息,但它似乎有不希望的副作用,即实际将信息打印给用户,这正是我试图避免的情况。

有没有其他方法可以做我在这里尝试做的事情,和/或我可以使用上面描述的方法来做这件事(将错误消息记录到控制台,但不记录到用户)?非常感谢。

在php.ini中设置display_errors=0log_errors=1

这应该是任何生产服务器的默认设置。