PHP-FPM启动状态查看全攻略:如何快速确认PHP-FPM是否正常运行
PHP-FPM(FastCGI Process Manager)作为PHP的高性能进程管理器,广泛应用于Web服务器(如Nginx、Apache)中,负责处理PHP脚本的执行,在服务器运维或开发调试中,确认PHP-FPM是否正常启动是排查问题的基础步骤,本文将详细介绍多种查看PHP-FPM启动状态的方法,涵盖命令行、配置文件、日志监控等场景,助你快速状态判断技巧。
通过ps命令查看进程是否存在(最直接的方法)
ps命令是Linux/Unix系统中查看进程状态的常用工具,若PHP-FPM已启动,其主进程和工作进程会以特定名称运行,通过以下命令可快速判断:
查看PHP-FPM主进程
PHP-FPM的主进程通常以php-fpm为进程名,可通过以下命令筛选:
ps aux | grep php-fpm
输出示例:
root 1234 0.0 0.1 123456 7890 ? Ss 10:00 0:01 php-fpm: master process (/etc/php-fpm.conf)
www 1235 0.0 0.2 234567 8901 ? S 10:01 0:00 php-fpm: pool www
www 1236 0.0 0.2 234567 8902 ? S 10:01 0:00 php-fpm: pool www
关键点:
- 若输出中包含
master process,且存在多个pool www子进程,说明PHP-FPM已正常启动(master process为主进程,子进程为实际处理请求的工作进程)。 - 若仅显示
grep php-fpm(即grep自身的进程),说明PHP-FPM未运行。
精简输出(避免grep干扰)
为避免grep命令自身进程干扰,可使用以下方式:
ps aux | grep "[p]hp-fpm"
通过systemctl或service命令管理(Systemd环境)
若PHP-FPM通过systemd服务管理(如CentOS 7+、Ubuntu 16+),可直接使用systemctl命令查看服务状态:
查看服务状态
systemctl status php-fpm
输出示例:
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since 三 2023-10-01 10:00:00 CST; 1h 30min ago
Main PID: 1234 (php-fpm)
Status: "Processes active: 2, idle: 3, Requests: 150"
CGroup: /system.slice/php-fpm.service
├─1234 php-fpm: master process (/etc/php-fpm.conf)
├─1235 php-fpm: pool www
└─1236 php-fpm: pool www
关键点:
Active: active (running)表示服务已启动并运行。- 若显示
inactive (dead)或failed,则服务未启动或启动失败。
启动/重启/停止服务(补充)
若需要手动操作,可使用以下命令:
# 启动服务 sudo systemctl start php-fpm # 重启服务 sudo systemctl restart php-fpm # 停止服务 sudo systemctl stop php-fpm # 设置开机自启 sudo systemctl enable php-fpm
旧版系统(使用service命令)
在CentOS 6或Ubuntu 14等旧版系统中,可能使用service命令:
service php-fpm status
通过PHP-FPM配置文件验证(检查进程监听状态)
PHP-FPM的配置文件(通常为/etc/php-fpm.conf或/etc/php-fpm.d/www.conf)中定义了进程监听的地址和端口,可通过检查配置与实际监听状态是否一致来判断服务是否启动。
查看配置文件中的监听地址
cat /etc/php-fpm.conf | grep "listen"
或查看www.conf(具体路径可能因系统而异,如/etc/php/7.4/fpm/pool.d/www.conf):
cat /etc/php/7.4/fpm/pool.d/www.conf | grep "listen"
输出示例:
listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
PHP-FPM可能监听TCP端口(如0.0.1:9000)或Unix域套接字(如/var/run/php-fpm/php-fpm.sock)。
检查端口/套接字是否被监听
(1)TCP端口监听(如0.0.1:9000)
使用netstat或ss命令检查端口是否被监听:
# netstat命令(需安装net-tools) netstat -tuln | grep 9000 # ss命令(推荐,现代Linux默认安装) ss -tuln | grep 9000
输出示例:
tcp LISTEN 0 128 127.0.0.1:9000 0.0.0.0:*
若显示LISTEN,说明端口被PHP-FPM监听,服务正常。
(2)Unix域套接字监听(如/var/run/php-fpm/php-fpm.sock)
检查套接字文件是否存在且有权限:
ls -l /var/run/php-fpm/php-fpm.sock
输出示例:
srw-rw---- 1 www-data www-data 0 10:01 /var/run/php-fpm/php-fpm.sock
- 若文件存在且权限为
srw-rw----(套接字文件),属主为运行PHP-FPM的用户(如www-data),说明服务正常监听。 - 若文件不存在或权限异常,需检查配置文件或服务日志。
通过PHP-FPM日志确认(查看启动与运行日志)
PHP-FPM的日志文件是判断服务状态的重要依据,尤其是启动失败时,日志会明确报错原因。
日志文件位置
PHP-FPM的日志路径通常在配置文件中定义,常见位置包括:
- 主进程日志:
/var/log/php-fpm/error.log(全局错误日志) - Pool日志:
/var/log/php-fpm/www-error.log(特定进程池的错误日志)
可通过以下命令查找日志路径:
grep -r "error_log" /etc/php-fpm*
查看日志内容
(1)查看最新日志(实时监控)
使用tail -f命令实时查看日志,观察是否有启动信息或错误:
tail -f /var/log/php-fpm/error.log
正常启动日志示例:
[01-Oct-2023 10:00:00] NOTICE: fpm is running, pid: 1234
[01-Oct-2023 10:00:00] NOTICE: ready to handle connections
启动失败日志示例:
[01-Oct-2023 10:00:00] ERROR: [pool www] cannot get uid for user 'www-data'
[01-Oct-2023 10:00:00] ERROR: failed to post-process the configuration
若日志中包含ERROR或failed,需根据错误信息修复配置(如用户权限、路径错误等)。
(2)查看历史日志
若需排查历史问题,可使用grep搜索关键词:
grep -i "started\|error\|failed" /var/log/php-fpm/error.log
通过php-fpm命令行工具验证(需支持--test参数)
部分PHP-FPM安装包提供了命令行工具,支持--test参数测试配置文件语法,或-t参数检查服务状态(需根据具体版本)。
测试配置文件语法
php-fpm --test
输出示例:
[01-Oct-2023 10:00:00] NOTICE: configuration file test is successful
若输出test is successful,说明配置文件语法正确,但无法直接确认服务是否运行(需结合其他方法)。



还没有评论,来说两句吧...