1. 查看错误日志定位具体原因
PHP-FPM的错误日志是排查启动失败的核心依据,通常位于/var/log/php-fpm.log或/var/log/php7.x-fpm.log(x为PHP版本号,如7.4、8.1)。使用以下命令查看最新日志:
sudo tail -n 50 /var/log/php-fpm.log
若日志路径未明确,可通过php-fpm -t命令输出的配置文件路径推断(如/etc/php/7.x/fpm/php-fpm.conf中error_log指令指定的路径)。
2. 测试配置文件语法正确性
配置文件语法错误是常见启动失败原因,使用以下命令测试PHP-FPM主配置文件(路径通常为/etc/php/7.x/fpm/php-fpm.conf)及池配置文件(如/etc/php/7.x/fpm/pool.d/www.conf)的语法:
sudo php-fpm7.x -t  # 替换7.x为实际PHP版本号
若存在语法错误,命令会输出具体错误位置(如“Directive ‘listen’ is not allowed here”),根据提示修改对应配置文件即可。
3. 解决端口/套接字冲突
若PHP-FPM配置为监听TCP端口(默认9000)或Unix套接字(如/run/php/php7.x-fpm.sock),需检查端口/套接字是否被其他进程占用:
# 检查TCP端口(如9000)
sudo netstat -tulnp | grep 9000
# 或检查Unix套接字
sudo lsof /run/php/php7.x-fpm.sock
若存在占用,可选择:
sudo kill -9 <PID>,<PID>为占用进程ID);/etc/php/7.x/fpm/pool.d/www.conf,修改listen = 127.0.0.1:9001);listen = /run/php/php7.x-new-fpm.sock)。4. 调整文件/目录权限
PHP-FPM进程(通常为www-data用户)需具备访问配置文件、日志目录及网站根目录的权限:
# 调整日志目录权限
sudo chown -R www-data:www-data /var/log/php-fpm
sudo chown -R www-data:www-data /run/php  # 若使用Unix套接字
# 调整网站根目录权限(如/var/www/html)
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
同时,检查/etc/php/7.x/fpm/pool.d/www.conf中的user和group指令,确保设置为www-data(或其他有权用户)。
5. 检查系统资源限制
若系统资源不足(如内存、打开文件描述符),PHP-FPM可能无法启动:
free -h,若内存不足,可增加交换分区(swap)或优化PHP应用(如减少pm.max_children值);ulimit -n,若限制过低(如1024),可修改/etc/security/limits.conf,添加以下内容:www-data soft nofile 65535
www-data hard nofile 65535
并修改/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive,添加session required pam_limits.so。6. 重新安装或更新PHP-FPM
若配置文件损坏或版本不兼容,可尝试重新安装PHP-FPM:
sudo apt-get update
sudo apt-get install --reinstall php7.x-fpm  # 替换7.x为实际版本号
安装完成后,重启服务:sudo systemctl restart php7.x-fpm。
7. 验证PHP-FPM服务状态
操作完成后,使用以下命令检查PHP-FPM服务状态:
sudo systemctl status php7.x-fpm
若显示“Active (running)”,则表示启动成功;若仍失败,需根据状态信息中的错误提示(如“Failed with result ‘exit-code’”)进一步排查。