Ubuntu中PHP-FPM启动失败的常见原因及排查方向
PHP-FPM的配置文件(如/etc/php/7.x/fpm/php-fpm.conf或/etc/php/7.x/fpm/pool.d/www.conf)存在语法错误或参数设置不当(如listen指令指向无效路径、user/group配置与实际运行用户不符、pm进程管理参数不合理),会导致启动失败。可通过sudo php-fpm -t命令测试配置文件语法,或查看错误日志定位具体错误。
若PHP-FPM配置为监听TCP端口(如默认的9000端口),而该端口已被其他进程(如Nginx、Apache或其他PHP-FPM实例)占用,会导致启动失败。可使用sudo netstat -tuln | grep <端口号>或sudo lsof -i:<端口号>命令检查端口占用情况,修改listen指令(如更换端口或改用Unix套接字)解决冲突。
PHP-FPM进程需要对配置文件、日志文件、PID文件及网站根目录具有读取/写入权限。若权限不足(如/var/log/php-fpm.log属于root用户,而PHP-FPM以www-data用户运行),会导致无法启动。需使用chown(如sudo chown -R www-data:www-data /var/log/php-fpm)和chmod(如sudo chmod 755 /var/run/php)命令调整权限。
若系统中未安装PHP-FPM(如通过apt安装PHP时未勾选php-fpm组件),或安装过程中出现错误(如依赖包缺失),会导致无法启动。可通过php-fpm --version命令检查是否安装,若未安装则使用sudo apt update && sudo apt install php-fpm重新安装。
若系统内存、CPU或磁盘空间不足(如free -h显示内存耗尽、df -h显示磁盘空间不足),PHP-FPM无法分配足够资源启动。可通过top、htop或free -h命令检查系统资源使用情况,释放资源或优化PHP应用(如减少pm.max_children数量)。
若PHP-FPM的日志文件(如/var/log/php-fpm.log)无法创建或写入(如目录不存在、权限不足),会导致启动失败(部分版本会因无法记录日志而终止)。需确保日志目录存在(如sudo mkdir -p /var/log/php-fpm)且具有正确权限(如sudo chown www-data:www-data /var/log/php-fpm)。