nginx和php-fpm:错误配置的PHP错误日志目的地

r3i60tvu  于 12个月前  发布在  PHP
关注(0)|答案(2)|浏览(82)

bounty还有3天到期。回答此问题可获得+100声望奖励。mmrn引起更多的注意这个问题:我想知道错误日志配置如何影响PHP的行为。

我们使用典型的nginx和php-fpm设置在Amazon Linux 2上运行的WordPress站点。
我们最近注意到:

  • PHP错误日志输出被发送到/var/log/nginx/error_log,即使/etc/php-fpm.d/www.conf包含php_admin_value[error_log] = /var/log/php-fpm/www-error.logphp_admin_flag[log_errors] = on
  • 原来/var/log/php-fpm是不可写的,因为/etc/php-fpm.d/www.conf/var/log/php-fpm中的user = nginxgroup = nginx属于apache:root
  • 更改权限后,PHP错误日志将写入/var/log/php-fpm/www-error.log

现在我们有两个问题。

  • 这是预期的行为吗?当php-fpm日志文件/目录不可写时,它会将日志发送到nginx log?我们搜索了解释这是如何可能的文件,但找不到任何。
  • 当权限配置错误时,WordPress的某些页面无法正常工作。错误日志设置会影响PHP的行为吗?

不幸的是,WordPress问题只发生在生产网站上,所以我们不能通过反复试验来调查问题。我们需要从理论上讲清楚。

inkz8wg9

inkz8wg91#

这是预期的行为吗?当php-fpm日志文件/目录不可写时,它会将日志发送到nginx log?我们搜索了解释这是如何可能的文件,但找不到任何。
在Nginx中,默认情况下,当fastcgi应用程序发送错误消息时,nginx会将该错误消息发送到自己的错误日志中。我猜PHP有一个回退行为,如果它不能写入错误日志文件,它会向fastcgi服务器(在本例中是nginx)而不是日志抱怨。听起来很合理
当权限配置错误时,WordPress的某些页面无法正常工作。错误日志设置会影响PHP的行为吗?
不应该...我可以想象这样写的代码:

if(false === error_log($error, 4)){
// do something special because error_log failed..
}

虽然,但我从来没有在野外见过(我从2006年开始做PHP)

ryhaxcpt

ryhaxcpt2#

1.这是预期的行为吗?当php-fpm日志文件/目录不可写时,它会将日志发送到nginx log?我们搜索了解释这是如何可能的文件,但找不到任何。
不,当指定的日志文件或目录不可写时,PHP-FPM不会将其错误日志发送到Nginx日志文件。默认情况下,PHP-FPM应该将其错误记录到www.conf文件中php_admin_value[error_log]指令指定的位置(在本例中已设置为/var/log/php-fpm/www-error.log)。
但是,您观察到的行为可能是由于配置错误或特定设置中的回退机制造成的。如果PHP-FPM在写入指定的日志文件或目录时遇到问题,它可能会回退到将错误日志发送到Nginx错误日志。
1.当权限配置错误时,WordPress的某些页面无法正常工作。错误日志设置会影响PHP的行为吗?
日志记录与页面呈现过程无关(当然,不正确的日志记录设置导致错误消息的内容显示在输出中时除外)。但是,如果你的页面有一些模板渲染问题,这与日志错误配置无关。
在这种情况下,您也可以考虑切换PHP处理程序和/或PHP版本,看看问题是否解决。

相关问题