You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 11:36:29