这与这些问题本质上相同:
https://stackoverflow.com/questions/8677493/php-fpm-doesnt-write-to-error-log
但那里的答案似乎不适用于使用 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
。
但是当发生错误时,我在任何指定的日志文件中都没有收到错误,并且在任何其他地方也找不到它。
我查看了其他问题上的所有建议,但没有找到任何可行的答案。我猜想自从发布这些答案以来,有些事情已经发生了变化。有什么建议吗?
答案1
为了诊断,我补充道:
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
在终端我使用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/本地/等,创建目录、文件,然后将所有者设置为www-数据:www-数据
cd /usr/local/etc
sudo mkdir php-fpm.d
cd php-fpm.d
sudo touch fpm.log
sudo chown -R www-data:www-data fpm.log
如果文件和目录确实存在,则运行
ls fpm.log -l
如果所有者是 root:
-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