10

This is essentially the same as these questions:

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

Nginx not logging PHP errors

BUT the answers there don't seem to be working on Ubuntu 16.04 with 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 exists and is owned by www-data.

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

log_errors = On 

Nginx Virtual Host's Server block

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

/var/log/myapp/access.log exists and is owned by www-data.

But when an error occurs, I don't get an error in any of the specified log files, and can't find it in any other place either.

I went through all of the suggestions on the other question but didn't find any answer that worked. I'm assuming something has changed since those answer were posted. Any suggestions?

3
  • Try to see ini_get('log_errors') and ini_get('error_log'), maybe your app logs them to a custom location Commented Feb 8, 2017 at 6:55
  • Create a simple file to display the output of phpinfo(), browse this file via browser, check the paths are correct, then remove the semicolon at the end of phpinfo(); to trigger an error. Commented Feb 8, 2017 at 7:57
  • For Nginx related errors, please check for errors in the default file location in Ubuntu 16.04 that is /var/log/nginx/error.log. Commented Feb 8, 2017 at 7:58

1 Answer 1

6

The comment above by the_nuts helped solve it for me. The directory and file didn't exist.

To diagnose, I added:

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

to the top of my code (a WordPress plugin). This outputted:

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

In terminal I used ls to learn the file and directory were missing, i.e.

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

outputted

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 

To fix: I changed directory to /usr/local/etc, created the directory, the file and then set the owner to 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 

If the file and directory do exist, run

ls fpm.log -l 

and if owner is root:

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

run

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

to give the web server ownership and write access

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

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.