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

Laravel Sail(WSL2环境)无请求时日志持续堆积问题求助

Laravel Sail(WSL2)日志疯狂填满的排查与解决

紧急止损:阻止日志爆炸

先临时修改代码,避免每次应用启动都生成大量错误日志:
打开app/Providers/AppServiceProvider.php,找到boot方法中调用Model::all()的代码(对应错误栈第31行的分类表查询),添加异常捕获:

public function boot()
{
    try {
        // 替换成你实际调用的模型,比如 Category::all()
        $categories = \App\Models\Category::all();
        // 后续使用数据的逻辑
    } catch (\Exception $e) {
        // 仅记录轻量警告,避免日志暴涨
        \Illuminate\Support\Facades\Log::warning('加载分类数据失败:'.$e->getMessage());
    }
}

也可以暂时注释这段代码,先让日志恢复正常。

根本原因分析

从错误栈能明确:

  • 错误是数据库连接失败(SQLSTATE[HY000] [2002] No such file or directory),触发点在AppServiceProvider的boot方法中
  • boot方法在Laravel应用启动时必执行,不管是WEB请求还是CLI命令
  • 正常访问时无问题,说明WEB环境数据库连接正常,问题出在CLI环境(定时任务、队列Worker、后台脚本)反复启动Laravel,但连接数据库失败,每次启动都写入错误日志

排查与修复步骤

1. 检查定时任务(Cron)

查看当前定时任务列表,确认是否有异常任务:

sail artisan schedule:list

同时查看容器的Cron日志,看是否有任务反复执行并报错:

sail logs -f laravel.test | grep cron

如果发现异常任务,修正对应定时任务逻辑。

2. 检查队列Worker状态

如果使用了队列,检查Worker是否频繁重启:

sail queue:work --status

或者查看队列相关日志:

sail logs -f laravel.test | grep queue

若Worker反复崩溃,排查队列任务代码问题,或验证队列环境的数据库配置是否异常。

3. 验证CLI环境的数据库连接

进入Sail容器,测试CLI模式下的数据库连接:

sail exec laravel.test bash
php artisan tinker
>>> \App\Models\Category::all();

如果执行报错,说明CLI环境数据库配置有问题:

  • 检查.env的DB_HOST:Sail环境下需设置为容器名(如mysql),而非127.0.0.1
  • 检查DB_SOCKET:若用socket连接,确认路径对应mysql容器内的默认路径/var/run/mysqld/mysqld.sock

4. 排查后台异常进程

进入容器查看是否有反复启动的PHP进程:

sail exec laravel.test bash
ps aux | grep php

如果发现异常进程,排查是否有自定义脚本或监控工具在频繁调用Laravel命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:37:32