我有一个 nginx + php-fpm 的设置。我在 nginx 错误日志中发现了很多这样的 PHP 警告消息:
2016/03/17 20:57:23 [error] 23002#0: *114868 FastCGI sent in stderr: "PHP message: PHP Warning: Declaration of Walker_Category_Filter::start_el(&$output, $category, $depth, $args) should be compatible with Walker_Category::start_el(&$output, $category, $depth = 0, $args = Array, $id = 0) in /var/www/wp-content/themes/venture/functions/theme/custom-post-types.php on line 0
PHP message: PHP Warning: Parameter 1 to W3_Plugin_TotalCache::ob_callback() expected to be a reference, value given in /var/www/wp-includes/functions.php on line 3464", client: 52.69.241.233, server: www.myhost.net, request: "GET /appuntamenti/ HTTP/1.1", host: "www.myhost.net"
我不想记录这样的事件,它们会填满我的日志并在 New Relic 报告上制造很多谣言。你知道如何改变 nginx 的这种行为吗?
我尝试用这个来改变我的php.ini配置:
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
该事件记录在 nginx 错误日志中,所以我认为这与 php-fpm 配置无关。
欢迎提出任何建议
谢谢 Fabio
答案1
这些是 PHP 本身生成的警告;由于它们没有被捕获就被打印到 stdout(或者可能是 stderr),所以它们最终会出现在您的服务器日志中。
我希望您输入的内容php.ini
足以消除这些警告。如果没有发生这种情况,您应该检查应用程序是否通过以下方式覆盖这些设置功能error_reporting()
。
一般来说,你应该注意警告 - 毕竟它们只是警告!负责维护应用程序的人(可能是你)都应该调查并修复它们;在你的日志中隐藏它们只是掩盖问题,可能会给你带来麻烦。
答案2
尽管熊的回答对你有用,但我不得不使用以下方法。
在编辑 PHP.ini 文件并确保没有 ini_set/error_reporting 值并重新启动 php5-fpm 服务后,我仍然收到警告,最后我不得不将其添加到我的 fpm 池文件中
/etc/php5/fpm/pool.d/www.conf
关闭警告:
php_admin_value[error_reporting] = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED
然后重启服务
service php5-fpm restart
答案3
nginx 添加
location / {
...
fastcgi_param PHP_ADMIN_VALUE "error_reporting=E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED";
...
}