MacBook M1找不到php-fpm.sock文件致PHP文件不执行仅下载
M1芯片Mac(macOS Monterey)Nginx不解析PHP、找不到php-fpm.sock排查方案
你之前查看的/opt/homebrew/etc/php/8.1路径是PHP 8.1的配置文件目录,本身不会存放运行时生成的sock文件,该目录内容如下:
按以下步骤排查修复:
1. 启动php-fpm服务并确认sock路径
php-fpm.sock是PHP-FPM服务启动后才会生成的运行时文件,服务未启动时自然找不到该文件:
- 执行命令启动PHP-FPM服务:
brew services start php@8.1 - 执行命令验证服务状态:
brew services list,确认php@8.1对应状态为started - 打开PHP-FPM进程配置文件确认sock实际路径:
/opt/homebrew/etc/php/8.1/php-fpm.d/www.conf,搜索listen =配置项,M1芯片Homebrew安装的PHP 8.1默认配置一般为listen = /opt/homebrew/var/run/php-fpm.sock,部分版本默认监听127.0.0.1:9000端口。
2. 修正Nginx的PHP解析配置
访问PHP文件触发下载,本质是Nginx没有将.php后缀的请求转发给PHP-FPM处理,需要修正站点配置:
- 打开对应站点的Nginx配置文件,默认存放路径为
/opt/homebrew/etc/nginx/servers/,若使用默认全局配置则打开/opt/homebrew/etc/nginx/nginx.conf - 找到.php请求的匹配规则块,确保配置如下,注意
fastcgi_pass的值必须和上一步查到的listen配置完全一致:
location ~ \.php$ { root 替换为你自己的站点根目录绝对路径; fastcgi_pass unix:/opt/homebrew/var/run/php-fpm.sock; # 若上一步查到listen配置为127.0.0.1:9000,上面一行替换为 fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
注意:
SCRIPT_FILENAME配置项缺失是最常见的解析失败原因,不要遗漏该行。
3. 重载服务验证效果
- 执行命令校验Nginx配置合法性:
nginx -t,输出syntax is ok和test is successful即为配置无误 - 执行命令重载Nginx使配置生效:
brew services restart nginx - 在站点根目录新建测试文件info.php,写入内容
<?php phpinfo();,浏览器访问对应地址即可正常看到PHP信息页,不会再触发文件下载。
常见问题补充
- 若启动PHP-FPM时提示sock文件权限不足,执行命令给运行目录赋权即可:
chmod 755 /opt/homebrew/var/run - 不要在etc配置目录下寻找sock运行时文件,Homebrew安装的服务运行时文件统一存放在
/opt/homebrew/var/run/路径下。
内容的提问来源于stack exchange,提问作者mehmetakkus
相关产品推荐
相关产品推荐

