在mac上配置php-fpm需三步:指定\_www用户组、监听127.0.0.1:9000端口、设pm=dynamic及max_children=10,否则nginx报502;验证需php-fpm -v、ps aux | grep php-fpm和lsof -i :9000。

在Mac系统上配置PHP-FPM,需明确指定进程运行身份、控制子进程数量策略,并让服务监听指定端口供Nginx或Apache调用——这三步缺一不可,否则Web服务器会报502 Bad Gateway。
确认PHP-FPM安装与配置文件位置
打开终端,执行php-fpm -v验证是否已安装;若返回版本号(如7.4、8.1、8.3),说明可用。接着运行php-fpm -i | grep "loaded configuration file",输出类似loaded configuration file => /usr/local/etc/php/8.3/php-fpm.conf的路径即为主配置文件位置。【必须记录该路径,后续所有修改都基于它】
设置进程运行用户与组
用sudo权限编辑主配置文件:sudo vim /usr/local/etc/php/8.3/php-fpm.conf(路径按上一步结果替换)。翻到[www]段落,取消以下两行注释并修改为macOS默认Web用户:
user = _wwwgroup = _www
这一步不能设为root或当前登录用户,否则Nginx以_www身份连接时会因权限不匹配拒绝通信。macOS的_www用户已预置,无需额外创建。
配置监听地址与端口
仍在[www]段内,找到listen =这一行。默认可能是listen = /tmp/php-fpm.sock(Unix socket)或被注释掉。开发调试阶段推荐改用TCP端口,便于抓包和多项目隔离:
方法一:监听本机9000端口listen = 127.0.0.1:9000
方法二:监听本机其他端口(如避免冲突)listen = 127.0.0.1:9001
⚠️注意:若改用listen = /var/run/php-fpm.sock这类socket路径,必须同步设置listen.owner = _www和listen.group = _www,且/var/run目录需存在并可写,否则启动直接失败。
调整进程管理模型与数量
在[www]段中配置以下参数,按实际负载选择动态模式:
第一步:启用动态进程管理pm = dynamic
第二步:设定初始、最小空闲、最大空闲进程数pm.start_servers = 3pm.min_spare_servers = 2pm.max_spare_servers = 5
第三步:限制最大子进程总数,防止内存耗尽pm.max_children = 10
Mac本地开发极少需要超过10个并发PHP进程。设太高会导致频繁OOM Killer杀进程;设太低(如pm.max_children = 2)则高并发请求排队超时,Nginx返回504 Gateway Timeout。
启动并验证PHP-FPM服务
保存配置后,在终端执行sudo php-fpm。若无报错且光标停住,说明master进程已在后台运行。立即执行ps aux | grep php-fpm,应看到至少两行输出:
– 一行含master process(主进程)
– 至少一行含pool www(工作子进程)
再用lsof -i :9000检查端口监听状态,输出中应包含php-fpm进程名和LISTEN状态。这一步成功,表示Nginx可安全配置fastcgi_pass 127.0.0.1:9000并转发PHP请求。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











