使用Nginx启用PHP-FPM 7上的错误日志logging?

这与这些问题基本相同:

https://stackoverflow.com/questions/8677493/php-fpm-doesnt-write-to-error-log

Nginx没有loggingPHP错误

但是 ,那里的答案似乎没有与PHP 7的Ubuntu 16.04工作。

/etc/php/7.0/fpm/pool.d/www.conf

catch_workers_output = yes php_flag[display_errors] = on php_admin_value[error_log] = /var/log/fpm-php.www.log php_admin_flag[log_errors] = on 

/var/log/fpm-php.www.log存在并由www-data拥有。

/etc/php/7.0/fpm/php.ini

 log_errors = On 

Nginx虚拟主机的服务器块

 access_log /var/log/myapp/access.log; error_log /var/log/myapp/error.log error; 

/var/log/myapp/access.log存在并由www-data拥有。

但是,当发生错误时,我不会在任何指定的日志文件中出现错误,也无法在其他任何地方find它。

我经历了关于另一个问题的所有build议,但没有find任何有效的答案。 自从这些答案发布以来,我假定有些事情已经改变了。 有什么build议么?

上面的评论帮助我解决了这个问题。 目录和文件不存在。

为了诊断,我补充道:

 print("\n\n<br><br>log_errors: ".ini_get('log_errors')); print("\n\n<br><br>error_log: ".ini_get('error_log')); 

到我的代码的顶部(一个WordPress插件)。 输出:

 log_errors: 1 error_log: /usr/local/etc/php-fpm.d/fpm.log 

在terminal我用ls来学习文件和目录丢失,即

 ls /usr/local/etc/php-fpm.d/fpm.log ls /usr/local/etc/php-fpm.d/ 

输出

 ls: cannot access '/usr/local/etc/php-fpm.d/fpm.log': No such file or directory ls: cannot access '/usr/local/etc/php-fpm.d': No such file or directory 

解决方法:我将目录更改为/ usr / local / etc创build目录,文件,然后将所有者设置为www-data:www-data

 cd /usr/local/etc sudo mkdir php-fpm.d cd php-fpm.d touch fpm.log sudo chown -R www-data:www-data fpm.log 

如果文件和目录确实存在,请运行

 ls fpm.log -l 

如果业主是根:

 -rw-r--r-- 1 root root 0 Jun 23 19:52 fpm.log 

 sudo chown -R www-data:www-data fpm.log 

给予Web服务器所有权和写入权限

 -rw-r--r-- 1 www-data www-data 12848 Jun 23 20:07 fpm.log