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

Laravel Valet异常排查:PHP-FPM SIGSEGV、Nginx上游连接中断及数据库访问问题

解决Laravel Valet 4.1.3 + PHP 8.2.8在macOS Big Sur 11.7.9的502错误与PHP-FPM段错误问题

问题背景

在macOS BigSur 11.7.9上使用Laravel Valet 4.1.3时出现三类异常:

  • PHP-FPM触发SIGSEGV段错误,子进程意外终止
  • Nginx返回upstream prematurely closed connection错误,导致网站出现502 Bad Gateway
  • 仅通过Valet访问PostgreSQL@14数据库时触发错误,直接测试数据库连接或使用php artisan serve运行项目时无异常

系统信息

  • macOS BigSur 11.7.9
  • PHP版本:8.2.8 (cli)
  • Laravel框架版本:9.52.12
  • Valet关联PHP版本:php@8.2

错误日志

PHP-FPM日志

[01-Aug-2023 09:13:04] WARNING: [pool valet] child 79760 exited on signal 11 (SIGSEGV) after 3.751510 seconds from start 
[01-Aug-2023 09:13:04] NOTICE: [pool valet] child 79768 started 

Nginx日志

2023/08/01 08:56:36 [error] 73231#0: *28 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: gmreproducciones.test, request: "GET / HTTP/2.0", upstream: "fastcgi://unix:/Users/juliofranco/.config/valet/valet.sock:", host: "gmreproducciones.test" 
2023/08/01 09:13:04 [error] 73231#0: *35 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: gmreproducciones.test, request: "GET / HTTP/2.0", upstream: "fastcgi://unix:/Users/juliofranco/.config/valet/valet.sock:", host: "gmreproducciones.test" 

排查与解决方案

1. 排查PHP扩展冲突(核心原因大概率在此)

段错误(SIGSEGV)通常由PHP扩展的内存问题或兼容性冲突导致,尤其是数据库相关扩展:

  • 执行php -m查看已加载的扩展,禁用非必要的第三方扩展(如xdebug、opcache以外的扩展),重启PHP-FPM和Valet后测试
  • 重新编译安装PostgreSQL相关扩展:
    brew reinstall php@8.2 postgresql@14
    
  • 验证扩展加载:执行php -m | grep pgsql,确保pdo_pgsql和pgsql两个扩展都存在

2. 调整PHP-FPM配置参数

编辑PHP-FPM的Valet池配置文件(路径:/usr/local/etc/php/8.2/php-fpm.d/valet.conf),调整以下参数避免进程崩溃:

pm.max_children = 5
pm.process_idle_timeout = 10s
request_terminate_timeout = 30s

修改后重启PHP-FPM:

brew services restart php@8.2

3. 重置Valet环境

清理Valet残留配置,重新初始化环境:

valet uninstall
rm -rf ~/.config/valet
composer global require laravel/valet
valet install
# 重新关联站点,根据实际情况选择命令
valet park # 若使用站点批量托管功能
# 或
valet link # 若单独关联单个站点

4. 修正数据库连接配置

检查Laravel项目的.env文件,将DB_HOST设置为127.0.0.1而非localhost,强制使用TCP连接避免套接字冲突:

DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=你的数据库名
DB_USERNAME=你的数据库用户名
DB_PASSWORD=你的数据库密码

5. 降级PHP版本(终极方案)

若以上方法无效,可能是PHP 8.2与Valet 4.1.3在macOS Big Sur上存在兼容性问题,尝试降级到PHP 8.1:

brew install php@8.1
valet use php@8.1
brew services restart php@8.1
valet restart

内容的提问来源于stack exchange,提问作者Julio Franco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:36:04