在使用nginx和php-fpm架构提供web服务的过程中,经常会遇到php代码出现错误的情况,如果没有正确地输出错误日志,那么在调试和优化过程中就会变得非常困难。本文将介绍如何配置nginx和php-fpm,使其能够正确地输出php错误日志,以便更快地排查问题。
1. 配置php-fpm
在php-fpm的配置中,需要将错误日志输出到一个文件中。我们可以在php-fpm.conf中添加以下配置:
error_log = /var/log/php-fpm/php-fpm.log
; 将日志输出到/var/log/php-fpm/php-fpm.log文件中
log_errors = on
; 开启错误日志记录
这里我们将错误日志输出到了/var/log/php-fpm/php-fpm.log文件中,这个文件需要根据实际情况自行创建。同时,我们还需要开启错误日志记录。
2. 配置nginx
在nginx的配置中,需要设置fastcgi_param参数中的SCRIPT_FILENAME和SCRIPT_NAME参数,以便让php-fpm在接收到请求的时候,知道要执行哪个php文件。在这里,我们还需要设置fastcgi_param参数中的ERROR_LOG参数,以便nginx能够正确地输出php错误日志。
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param ERROR_LOG /var/log/nginx/php-error.log;
include fastcgi_params;
}
3. 创建日志文件
在以上配置完毕后,我们需要创建对应的日志文件。
sudo touch /var/log/php-fpm/php-fpm.log
sudo touch /var/log/nginx/php-error.log
sudo chown www-data:www-data /var/log/php-fpm/php-fpm.log /var/log/nginx/php-error.log
4. 测试
在以上步骤完成后,我们可以进行测试,看看配置是否生效。我们可以先故意将代码中的一个变量名拼写错误,然后访问相应的网页。这时,php-fpm就应该会输出错误日志了。
假设我们有一个test.php的文件,文件中包含以下代码:
$value = 'Hello World!';
echo $vale;
?>
假设我们的web根目录为/var/www/html,那么我们访问http://127.0.0.1/test.php,应该会看到一些错乱的代码,同时,php-fpm应该输出了错误日志。
5. 总结
通过以上步骤,我们成功地配置了nginx和php-fpm,使其能够正确地输出php错误日志。这将在调试和优化过程中非常有用,并能够节省大量时间。