根本原因是php-fpm 8.0.30默认监听127.0.0.1:9000(TCP),不生成.sock文件,而Nginx配置却指向unix socket路径;需统一通信方式:要么改Nginx为fastcgi_pass 127.0.0.1:9000,要么修改www.conf中listen为sock路径并确保目录存在、权限正确。

phpenv 启动服务时 php-fpm 8.0.30 找不到 sock 文件,根本原因不是 php-fpm 没运行,而是它默认监听 127.0.0.1:9000(TCP 端口),根本不会生成 .sock 文件。Nginx 配置里却写了 fastcgi_pass unix:/tmp/php-fpm.sock 这类路径,自然报“找不到”。
确认 php-fpm 实际监听方式
进入当前 phpenv 激活的 PHP 8.0.30 目录(如 E:\phpenv\versions\8.0.30\etc\php-fpm.d\www.conf),打开 www.conf,查找 listen = 行:
- 若为
listen = 127.0.0.1:9000→ 它走 TCP,不建 sock 文件 - 若为
listen = /tmp/php-fpm.sock或/var/run/php/php8.0-fpm.sock→ 才会生成 sock,但需确保路径存在且有写权限
统一 Nginx 与 php-fpm 的通信方式
两者必须匹配,不能一个用 TCP、一个配 Unix socket:
- 选 TCP 方式(简单):把 Nginx 配置里的
fastcgi_pass unix:/tmp/php-fpm.sock改成fastcgi_pass 127.0.0.1:9000,保存后重启 Nginx - 选 Unix socket 方式(推荐):修改
www.conf中的listen行,例如:listen = /var/run/php/php8.0-fpm.sock
再手动创建目录并赋权:mkdir -p /var/run/phpchown -R www-data:www-data /var/run/php(Linux)
Windows 用户建议改用C:/phpenv/tmp/php8.0-fpm.sock并确保父目录可写
检查 sock 文件是否真被创建
改完配置后,别直接刷新网页,先手动启动 php-fpm 并观察:
立即学习“PHP免费学习笔记(深入)”;
- 执行:
php-fpm -c E:\phpenv\versions\8.0.30\php.ini -y E:\phpenv\versions\8.0.30\etc\php-fpm.conf -t(语法测试) - 再启动:
php-fpm -c ... -y ... -D(后台运行) - 立刻检查对应路径是否存在
.sock文件:dir C:\phpenv\tmp\(Win)或ls -l /var/run/php/(Linux/macOS) - 如果文件没出现,说明 php-fpm 启动失败——此时看错误日志,常见于
listen.owner/listen.group权限写错,或路径含非法字符
Windows 下特别注意路径和权限
Windows 不原生支持 Unix socket,但 php-fpm 可模拟。不过部分 phpEnv 封装版本对路径处理较弱:
- 避免使用带空格或中文的路径(如
C:\Program Files\...) - sock 路径尽量用短绝对路径,例如:
listen = C:/phpenv/tmp/php80.sock - Nginx 配置中也必须用正斜杠:
fastcgi_pass unix:C:/phpenv/tmp/php80.sock - 确保
C:/phpenv/tmp/目录存在,且当前用户有完全控制权限



















