web-dev-qa-db-ja.com

Nginxを使用してPHP-FPM 7でエラーログを有効にしますか?

これは基本的にこれらの質問と同じです:

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

Nginxがログを記録しないPHPエラー

[〜#〜] but [〜#〜]Ubuntu 16.04でPHP 7。

/ 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が所有しています。

しかし、エラーが発生しても、指定されたログファイルでエラーが発生することはなく、他の場所でもエラーを見つけることができません。

私は他の質問のすべての提案を調べましたが、うまくいく答えが見つかりませんでした。それらの回答が投稿されてから何かが変わったと思います。助言がありますか?

6
Nick

上記のコメントthe_nuts によって解決されました。ディレクトリとファイルが存在しませんでした。

診断するために、私は追加しました:

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/local/etcに変更し、がディレクトリとファイルを作成してから、所有者をwww-data:www-data

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
3
BrianHenryIE