Telescope 数据不显示的主因是环境配置、Watcher 开关和数据库迁移三者未正确协同:APP_ENV 必须为 local 且 APP_DEBUG=true;config/telescope.php 中 QueryWatcher 等需设为 true;必须执行 php artisan migrate 创建 telescope_entries 表。
Telescope 路由能打开、界面有内容,但关键数据(比如 SQL 查询、队列任务、日志)不显示?不是装得不对,是默认只开了一半功能,且强依赖环境判断和显式配置。
为什么 /telescope 页面空或部分标签没数据
常见现象:Requests 标签能看到请求,但 Queries、Jobs、Logs 里一条都没有;或者点了请求详情,下方 Queries 区域空白。
必须是
(不能是
、
或空值),
也必须同时满足
中对应 watcher 的键值为
,例如
—— 默认 Laravel 10+ 是
,但 Laravel 11+ 安装后可能被重置为
漏执行
:表
缺失会导致写入静默失败,界面无报错但数据不存
Laravel 11+ 需确认
已显式注册在
的
数组中(自动发现默认关闭)
用
验证路由是否注册;无输出说明服务提供者根本没加载
如何确认 QueryWatcher 和 JobWatcher 真正在工作
别只刷页面等结果,直接验证采集链路是否通:
在
的
数组里,确认
和
值为
临时加一行测试代码:
,然后刷新
→ Messages 标签页,能看见说明 Telescope 基础写入正常
手动触发一个查询:
,再立刻进
执行
确认 SQL 确实发出了;如果 tinker 能打出,但 Telescope 里没有,基本锁定是
被 ignore 规则过滤(如设置了
却查的是
表)
队列任务要确保驱动不是
(同步模式下 Telescope 捕不到),且任务已真正 dispatch(非
)
绑定参数不显示、SQL 显示不全的真正原因
不是配置漏了,是 Telescope 的记录机制和 SQL 类型共同决定的:
Laravel 13.2.0
PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
下载
绑定参数只在预处理语句中生效:
这类会记录参数;而
是字符串拼接,Telescope 只记录原始语句,无参数可绑
QueryWatcher 默认忽略元数据查询(如
、
),这不是 bug,是设计行为
大响应体或长 SQL 被截断?检查
中
的
,可调大到
(单位 KB)
想看完整 SQL + 参数,必须点进单条请求详情页的 Queries 子 tab —— 首页的“Queries”汇总只是入口,不展开看不到绑定值
生产环境误启用 Telescope 的后果比想象中严重
它不是“低采样率监控”,而是“全量请求快照记录器”,一旦启用就停不下来:
每条请求都存完整
、
、所有 SQL 绑定参数、调用栈、中间件顺序——高并发下数据库写入压力陡增,内存暴涨
在
里设了也没用,因为
的
闭包默认只返回
,靠环境变量控制不可靠
最稳妥的做法:上线前删掉
(或至少移除
),并从
中彻底注销
如果真要在预发环境灰度,不要改
,而是用
规则做路径级过滤,例如只记录
相关请求
Telescope 的核心价值不在“开了就能看到”,而在“精准控制哪些行为该被记录、在哪种条件下才触发”。很多问题其实出在 watcher 开关、环境判定、迁移缺失这三处,而不是功能本身失效。
APP_ENVlocaldevstagingAPP_DEBUG=trueconfig/telescope.phpfalse'Laravel\Telescope\Watchers\QueryWatcher' => falsetruefalsephp artisan migratetelescope_entriesApp\Providers\TelescopeServiceProvider::classconfig/app.phpprovidersphp artisan route:list | grep telescopeconfig/telescope.phpwatchers'Laravel\Telescope\Watchers\QueryWatcher''Laravel\Telescope\Watchers\JobWatcher'trueTelescope::recordMessage('query-test', 'debug');/telescopeUser::where('id', 1)->first();php artisan tinkerDB::getQueryLog()QueryWatcher'prefixes' => ['test_']userssyncdispatchSync()DB::table('users')->where('id', $id)->get()DB::select("SELECT * FROM users WHERE id = $id")SHOW TABLESPRAGMAconfig/telescope.phpRequestWatcher'size_limit' => 641024request->all()response->content()TELESCOPE_ENABLED=true.envconfig/telescope.phpenabled$request->isLocal()composer require laravel/telescope--devconfig/app.phpTelescopeServiceProviderenabledignore/api/v1/orders