LOCKLOSE 发表于 2018-11-12 06:14:18

解决:LNMP架构下nginx的error_log日志过大问题

  php-fpm.conf 中的
catch_workers_output = yes  设置可以捕获 php 程序的错误输出
  我在部署LNMP架构时都是设置此项为yes,便于日志分析
  如果此项设置为 yes ,同时
error_reporting = E_ALL  的话,那么nginx的错误日志会记录大量记录,内容如下:
2013/08/09 14:38:14 6687#0: *33365028 FastCGI sent in stderr: "PHP Notice:Undefined variable: xxxx in /data/www/www/controllers/main.php on line 50  
PHP Notice:Undefined variable: xxxx in /data/www/www/controllers/main.php on line 55
  
PHP Notice:Undefined index:sid in /data/www/www/controllers/main.php on line 88
  当然了,这是在php代码写的不够严谨的情况下,如:
  1、直接使用
$sid = $_GET['sid'];  而未做 isset 判断
  2、使用未定义变量
print $username;  像这样的 E_NOTICE 类错误都会记录到nginx错误日志,日志大小增长迅速
  比较好的解决方法是开发严谨的程序
  其次就是调整错误报告的级别,如去掉 E_NOTICE 类的错误
  可以在 php.ini 中设置,如:
error_reporting = E_ALL & ~E_NOTICE  即可,
  配置文件中不支持
error_reporting = E_ALL ^ E_NOTICE  这种写法,但是在php程序中可以这么使用
  其实即使在配置文件中设置了
error_reporting = E_ALL & ~E_NOTICE  如果同时在程序中设置,如:
error_reporting(E_ALL);  那么会以在程序中设置的为准,所以日志还是会记录 Notice 错误的


页: [1]
查看完整版本: 解决:LNMP架构下nginx的error_log日志过大问题