php fpm开启错误日志的方法
php fpm作为PHP FastCGI Process Manager,常用于运行PHP网站,可通过命令行或配置文件开启错误日志以方便排查问题。下面介绍php fpm开启错误日志的方法。
一、命令行开启错误日志
在运行php fpm时,可以通过命令行参数来开启错误日志。在启动php fpm时加上--log-level参数即可开启错误日志,示例如下:
php-fpm --fpm-config /etc/php-fpm.conf --log-level warning
其中--log-level参数指定了日志记录的级别,常用的有debug,notice,warning,error,critical,alert,emergency等级别。在调试过程中,可以将其设置为debug以详细记录各种信息,例如:
php-fpm --fpm-config /etc/php-fpm.conf --log-level debug
二、配置文件开启错误日志
在php fpm的配置文件中,也可以配置错误日志的路径和级别。一般配置文件位于/etc/php-fpm.conf或/etc/php-fpm.d/www.conf,示例如下:
; 通用配置 error_log = /var/log/php-fpm/error.log log_level = warning ; 指定设备目录下的www.conf配置,此处仅列举error_log和log_level部分 [www] error_log = /var/log/php-fpm/www-error.log log_level = warning
其中error_log指定了错误日志文件路径,log_level指定了日志记录的级别,其他级别可参考上面的命令行参数。
需要注意的是,根据上面的配置,需要手动创建/var/log/php-fpm目录及其子目录,并授权给www-data用户(或运行php fpm的用户)。命令如下:
sudo mkdir -p /var/log/php-fpm sudo chown -R www-data:www-data /var/log/php-fpm
或者使用其他合适的用户和权限。
三、使用systemd控制php fpm进程
使用systemd控制php fpm进程时,需要创建systemd service文件来设置错误日志。示例如下:
[Unit] Description=The PHP FastCGI Process Manager After=nginx.service [Service] Type=simple PIDFile=/run/php/php-fpm.pid ExecStart=/usr/sbin/php-fpm -D -y /etc/php-fpm.conf --allow-to-run-as-root --nodaemonize --force-stderr ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/bin/kill -SIGINT $MAINPID PrivateTmp=true Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target
其中ExecStart指定了php fpm命令及参数,--force-stderr参数强制将错误日志输出到系统日志,而不是标准输出或标准错误输出。需要注意的是,此时需要通过syslog来查看错误日志,例如:
tail -f /var/log/syslog | grep php-fpm
四、总结
开启php fpm错误日志是排查PHP网站问题的基本步骤。不同的环境可以选择不同的方法和级别来记录错误日志,如需更详细记录调试信息,可将日志级别设置为debug。
