在使用php-fpm + nginx时无法获得错误堆栈跟踪或错误日志


Unable to get error stack trace or error log while using php-fpm + nginx

我在我的Ubuntu 14.04机器上使用php-fpm 5.5.9和nginx 1.4.6。我已经使用apt-get包管理器安装了它们。我无法获得index.php脚本在错误日志和浏览器中遇到的错误的堆栈跟踪。我从stackoverflow和其他文章中搜索并实现了几个解决方案,但没有一个适合我。下面是我的nginx配置文件和php-fpm配置文件。如果我犯了什么愚蠢的错误,请帮助我。

Nginx配置:

location ~ '.php$ {
        # With php5-fpm:
                #try_files $uri =404;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        fastcgi_read_timeout 600;
        fastcgi_send_timeout 600;
        proxy_connect_timeout  600;
        proxy_send_timeout  600s;
        proxy_read_timeout  600s;
        fastcgi_pass 127.0.0.1:7777;
        fastcgi_index index.php;
    }

PHP-FPM配置:

error_log = /tmp/php5-fpm.log

PHP-FPM池配置:

catch_workers_output = yes 
slowlog = /var/log/php-fpm/$pool.log.slow
listen = 127.0.0.1:7777
php_flag[display_errors] = On 
php_admin_value[error_log] = /tmp/fpm-php.www.log 
php_admin_flag[log_errors] = On

不使用PHP xdebug模块,实在找不到合理的解决方案。

sudo apt-get install php5-xdebug

它应该安装模块配置,但之后可能需要重新启动php-fpm。

sudo service php5-fpm restart

安装后,我终于可以从php5-fpm获得堆栈跟踪。

在你的配置中,它说error_log文件在/etc/...中,但是你可能只是在错误的地方寻找。

你有没有检查默认的错误日志位置?通常应该是:/var/log/nginx/*,这里有一个nginx_error.log文件。可能还有其他日志文件

还要注意PHP-FPM和nginx配置的语法不同。检查是否有这样的错误。它可能被错误地解析,从而导致您的错误。

检查错误日志的文件权限。nginx的运行用户可以在那里写吗?