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

如何修复Valet池子进程退出引发的502错误?Laravel API登录失败

问题根源分析

从日志能直接定位两个核心问题:

  1. PHP-FPM进程被系统强制终止(SIGKILL信号9):这是macOS的内存不足杀手(oom_killer)触发的,当系统剩余内存不够时,会主动干掉占用内存高的PHP-FPM子进程,导致Nginx拿不到响应,返回502。
  2. PHP-FPM进程崩溃(SIGABRT信号6):信号6说明PHP代码触发了致命错误——比如未捕获的异常、内存溢出、扩展兼容性问题,直接导致进程终止,进而引发Nginx的502错误。
修复步骤

一、解决内存不足导致的SIGKILL

  • 关掉不必要的后台应用:打开活动监视器,终止占用大量内存的非必要进程(比如浏览器多余标签页、闲置的大型IDE窗口)。
  • 调整PHP内存限制:编辑PHP配置文件(路径一般是/usr/local/etc/php/{你的PHP版本}/php.ini),修改参数:
    memory_limit = 256M  # 4G内存机器设256M,8G设512M,根据自己机器调整
    
  • 优化PHP-FPM进程池配置:编辑/usr/local/etc/php/{你的PHP版本}/php-fpm.d/valet.conf(Valet专用进程池配置),调整进程数避免内存过载:
    pm.max_children = 4  # 4G内存设4-6,8G设8-10,按需调整
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3
    
    修改完重启PHP-FPM:brew services restart php@{你的PHP版本}

二、排查PHP致命错误导致的SIGABRT

  • 开启PHP详细错误日志:编辑php.ini,开启错误日志并设置详细级别:
    log_errors = On
    error_log = /usr/local/var/log/php-error.log
    error_reporting = E_ALL
    display_errors = Off  # 本地开发可以临时设On,方便看错误
    
  • 触发登录请求后,查看PHP错误日志:tail -f /usr/local/var/log/php-error.log,里面会有具体错误信息——比如OAuth类不存在、依赖未安装、数据库表缺失(比如oauth_clients表)。
  • 检查Laravel OAuth配置:确认config/auth.php和config/services.php里的OAuth配置正确,重新生成Passport客户端:php artisan passport:install。
  • 检查依赖兼容性:运行composer check-platform-reqs,确认所有依赖的PHP版本、扩展版本符合要求,重点排查Laravel Passport和当前PHP版本的兼容性。

三、Valet额外排查

  • 确保Valet使用的PHP版本和Laravel项目一致:运行valet use php@{你的项目PHP版本}切换版本,避免版本不兼容。
  • 彻底重置Valet:先执行valet uninstall,手动删除~/.config/valet目录,再重新安装valet install,确保配置完全干净。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:02:09