From 40a263ce225d8f8dc362c4437db98942f9aabb82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=9A=82=E8=9A=81=E4=BA=91?= Date: Thu, 8 Oct 2026 21:09:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E5=85=A5=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RXThinkCMF_Laravel13_AntdVue/zh/core/captcha.md | 8 +++++++- RXThinkCMF_Laravel13_AntdVue/zh/introduction.md | 6 +++++- RXThinkCMF_Laravel13_AntdVue/zh/modules/index.md | 2 +- .../zh/quickstart/backend-start.md | 4 ++-- RXThinkCMF_Laravel13_AntdVue/zh/quickstart/laragon.md | 4 ++-- RXThinkCMF_Laravel13_EleVue/zh/core/captcha.md | 8 +++++++- RXThinkCMF_Laravel13_EleVue/zh/modules/index.md | 2 +- .../zh/quickstart/backend-start.md | 4 ++-- RXThinkCMF_Laravel13_EleVue/zh/quickstart/laragon.md | 4 ++-- RXThinkCMF_Laravel13_NaiveVue/zh/core/captcha.md | 8 +++++++- RXThinkCMF_Laravel13_NaiveVue/zh/introduction.md | 6 +++++- RXThinkCMF_Laravel13_NaiveVue/zh/modules/index.md | 2 +- .../zh/quickstart/backend-start.md | 4 ++-- RXThinkCMF_Laravel13_NaiveVue/zh/quickstart/laragon.md | 4 ++-- 14 files changed, 46 insertions(+), 20 deletions(-) diff --git a/RXThinkCMF_Laravel13_AntdVue/zh/core/captcha.md b/RXThinkCMF_Laravel13_AntdVue/zh/core/captcha.md index ccab9cb..7c5cb99 100644 --- a/RXThinkCMF_Laravel13_AntdVue/zh/core/captcha.md +++ b/RXThinkCMF_Laravel13_AntdVue/zh/core/captcha.md @@ -154,12 +154,18 @@ Content-Type: application/json | 验证码过期/不存在 | 1 | 验证码错误 | | 验证码不匹配 | 1 | 验证码错误 | | 获取频率超限 | 1 | 请求过于频繁,请 N 秒后重试 | +| Redis 未连接(密码错误/服务未启) | 1 | 缓存服务(Redis)连接失败,请检查 Redis 配置(地址、端口、密码)后重试 | +| 验证码生成的其它异常 | 1 | 验证码生成失败,请稍后重试 | | 未配置验证码长度(=0) | — | 跳过验证码校验(仅调试用途) | :::tip 验证码错误统一提示 无论验证码是过期、不存在还是不匹配,统一提示"验证码错误",不暴露具体原因,防止攻击者探测。 ::: +:::tip Redis 不可用的检测与提示 +生成验证码写入 Redis 失败时,会再执行一次 `PING` 复检(同样走地址、端口、密码鉴权):连接确实不通才返回「缓存服务(Redis)连接失败…」这条可操作的提示,其余情况返回通用提示;真实错误(如密码不匹配、连接拒绝)记录在日志 `验证码写入 Redis 失败` 中。 +::: + ### Redis 存储结构 ```text @@ -375,7 +381,7 @@ CAPTCHA_NOISE_DOTS=300 | 现象 | 原因 | 处理 | |------|------|------| -| 验证码接口 500 | Redis 未连接 / phpredis 扩展缺失 | 见 [2.2 Laragon 环境搭建](/zh/quickstart/laragon.html) Redis 章节 | +| 验证码接口返回「缓存服务(Redis)连接失败…」 | Redis 未连接 / 密码不匹配 / phpredis 扩展缺失 | 见 [2.2 Laragon 环境搭建](/zh/quickstart/laragon.html) Redis 章节 | | 图片显示空白 | 字体文件缺失 | 确认 `public/static/fonts/Vera.ttf` 存在 | | 一直提示验证码错误 | 前端传参名错误 | 必须是 `key` / `code`(非 captchaKey/captchaCode) | | 频繁提示"请求过于频繁" | 同 IP 短时间多次获取 | 等待窗口期结束,或调整 `CAPTCHA_RATE_LIMIT` | diff --git a/RXThinkCMF_Laravel13_AntdVue/zh/introduction.md b/RXThinkCMF_Laravel13_AntdVue/zh/introduction.md index 53259f9..56a57cd 100644 --- a/RXThinkCMF_Laravel13_AntdVue/zh/introduction.md +++ b/RXThinkCMF_Laravel13_AntdVue/zh/introduction.md @@ -54,7 +54,7 @@ ## 软件出处 -+ 软件名称:RXThinkCMF前后端分离Laravel13+AntDesign版本 ++ 软件名称:RXThinkCMF前后端分离Laravel13+ElementPlus版本 + 软件作者:@小蚂蚁云团队 + 软件协议:Apache-2.0 + 官网网址:[https://www.rxthink.cn](https://www.rxthink.cn) @@ -130,6 +130,10 @@ + + + + diff --git a/RXThinkCMF_Laravel13_AntdVue/zh/modules/index.md b/RXThinkCMF_Laravel13_AntdVue/zh/modules/index.md index aa115e8..faed9e8 100644 --- a/RXThinkCMF_Laravel13_AntdVue/zh/modules/index.md +++ b/RXThinkCMF_Laravel13_AntdVue/zh/modules/index.md @@ -205,7 +205,7 @@ const menus = await getMenuList(); // menus = [{id:1, name:'控制面板', path:'/dashboard', children:[...]}] // 修改密码(成功后前端需清除令牌重新登录 —— 后端已全端吊销) -await updatePassword({ oldPassword: '123456', newPassword: '654321' }); +await updatePassword({ password: '123456', newPassword: '654321', confirmPassword: '654321' }); // 更新个人信息 await updateProfile({ realname: '张三', mobile: '13800138000' }); diff --git a/RXThinkCMF_Laravel13_AntdVue/zh/quickstart/backend-start.md b/RXThinkCMF_Laravel13_AntdVue/zh/quickstart/backend-start.md index 191c336..efd3d10 100644 --- a/RXThinkCMF_Laravel13_AntdVue/zh/quickstart/backend-start.md +++ b/RXThinkCMF_Laravel13_AntdVue/zh/quickstart/backend-start.md @@ -240,9 +240,9 @@ lsof -i :8000 php artisan serve --port=8080 ``` -### 6. 验证码接口报"验证码服务不可用" +### 6. 验证码接口报"缓存服务(Redis)连接失败" -Redis 未启动或密码不匹配(`.env` 中 `REDIS_PASSWORD` 与 Redis 实际 `requirepass` 不一致)。验证: +Redis 未启动或密码不匹配(`.env` 中 `REDIS_PASSWORD` 与 Redis 实际 `requirepass` 不一致),接口返回「缓存服务(Redis)连接失败,请检查 Redis 配置(地址、端口、密码)后重试」,真实原因见日志 `验证码写入 Redis 失败`。验证: ```bash redis-cli ping # 输出 PONG diff --git a/RXThinkCMF_Laravel13_AntdVue/zh/quickstart/laragon.md b/RXThinkCMF_Laravel13_AntdVue/zh/quickstart/laragon.md index 36ca9af..35db059 100644 --- a/RXThinkCMF_Laravel13_AntdVue/zh/quickstart/laragon.md +++ b/RXThinkCMF_Laravel13_AntdVue/zh/quickstart/laragon.md @@ -230,7 +230,7 @@ netstat -an | findstr ":6379" # 应看到 127.0.0.1:6379 LIS ### 设置密码(实际踩坑记录) :::warning -Redis 无密码直连可用;一旦在 Redis 侧设置了 `requirepass` 而 `.env` 未同步,Laravel 所有 Redis 操作(验证码、JWT 会话、限流)会全部失败,且 CaptchaService 的 catch 会把真实错误吞掉,只报「验证码生成失败 / 验证码服务不可用」。 +Redis 无密码直连可用;一旦 Redis 侧设置了 `requirepass` 而 `.env` 未同步(或 `.env` 配了 `REDIS_PASSWORD` 而 Redis 侧没设密码),Laravel 所有 Redis 操作(验证码、JWT 会话、限流)会全部失败。验证码接口此时返回「缓存服务(Redis)连接失败,请检查 Redis 配置(地址、端口、密码)后重试」,真实错误(如 `ERR AUTH ...`)记录在日志 `验证码写入 Redis 失败` 中。 ::: 处理步骤(缺一不可): @@ -281,7 +281,7 @@ $PHP_HOME\php.exe artisan tinker --execute="try { \Illuminate\Support\Facades\Re |------|------|------| | `/` 正常,`/api/*` 返回 Apache 原生 HTML 404 | vhost 缺 `` 块,`.htaccess` 被忽略 | 补 `AllowOverride All` 块,`httpd -t` 后重启 Apache | | `Class "Redis" not found` | PHP 缺 redis 扩展 | 装 `php_redis.dll` + `php.ini` 加 `extension=redis` | -| 验证码生成失败 / 服务不可用 | Redis 密码不匹配或服务未启(日志里真实错误被 catch 吞掉) | `.env` 配 `REDIS_PASSWORD`,tinker 单测 Redis 连通 | +| 验证码接口返回「缓存服务(Redis)连接失败…」 | Redis 密码不匹配或服务未启 | 日志搜 `验证码写入 Redis 失败` 看真实错误;`.env` 配 `REDIS_PASSWORD`,tinker 单测 Redis 连通 | | artisan/pint 报 requires PHP >= 8.3 | shell PATH 的 php 是旧版 | 用 `$PHP_HOME\php.exe` 完整路径调用 | | `httpd -k restart` 报 No installed service | Apache 未注册 Windows 服务 | `taskkill` 后重新启动 `httpd.exe` | | 改了配置 / 扩展不生效 | mod_php 常驻不热加载 | 必须重启 Apache | diff --git a/RXThinkCMF_Laravel13_EleVue/zh/core/captcha.md b/RXThinkCMF_Laravel13_EleVue/zh/core/captcha.md index ccab9cb..7c5cb99 100644 --- a/RXThinkCMF_Laravel13_EleVue/zh/core/captcha.md +++ b/RXThinkCMF_Laravel13_EleVue/zh/core/captcha.md @@ -154,12 +154,18 @@ Content-Type: application/json | 验证码过期/不存在 | 1 | 验证码错误 | | 验证码不匹配 | 1 | 验证码错误 | | 获取频率超限 | 1 | 请求过于频繁,请 N 秒后重试 | +| Redis 未连接(密码错误/服务未启) | 1 | 缓存服务(Redis)连接失败,请检查 Redis 配置(地址、端口、密码)后重试 | +| 验证码生成的其它异常 | 1 | 验证码生成失败,请稍后重试 | | 未配置验证码长度(=0) | — | 跳过验证码校验(仅调试用途) | :::tip 验证码错误统一提示 无论验证码是过期、不存在还是不匹配,统一提示"验证码错误",不暴露具体原因,防止攻击者探测。 ::: +:::tip Redis 不可用的检测与提示 +生成验证码写入 Redis 失败时,会再执行一次 `PING` 复检(同样走地址、端口、密码鉴权):连接确实不通才返回「缓存服务(Redis)连接失败…」这条可操作的提示,其余情况返回通用提示;真实错误(如密码不匹配、连接拒绝)记录在日志 `验证码写入 Redis 失败` 中。 +::: + ### Redis 存储结构 ```text @@ -375,7 +381,7 @@ CAPTCHA_NOISE_DOTS=300 | 现象 | 原因 | 处理 | |------|------|------| -| 验证码接口 500 | Redis 未连接 / phpredis 扩展缺失 | 见 [2.2 Laragon 环境搭建](/zh/quickstart/laragon.html) Redis 章节 | +| 验证码接口返回「缓存服务(Redis)连接失败…」 | Redis 未连接 / 密码不匹配 / phpredis 扩展缺失 | 见 [2.2 Laragon 环境搭建](/zh/quickstart/laragon.html) Redis 章节 | | 图片显示空白 | 字体文件缺失 | 确认 `public/static/fonts/Vera.ttf` 存在 | | 一直提示验证码错误 | 前端传参名错误 | 必须是 `key` / `code`(非 captchaKey/captchaCode) | | 频繁提示"请求过于频繁" | 同 IP 短时间多次获取 | 等待窗口期结束,或调整 `CAPTCHA_RATE_LIMIT` | diff --git a/RXThinkCMF_Laravel13_EleVue/zh/modules/index.md b/RXThinkCMF_Laravel13_EleVue/zh/modules/index.md index aa115e8..faed9e8 100644 --- a/RXThinkCMF_Laravel13_EleVue/zh/modules/index.md +++ b/RXThinkCMF_Laravel13_EleVue/zh/modules/index.md @@ -205,7 +205,7 @@ const menus = await getMenuList(); // menus = [{id:1, name:'控制面板', path:'/dashboard', children:[...]}] // 修改密码(成功后前端需清除令牌重新登录 —— 后端已全端吊销) -await updatePassword({ oldPassword: '123456', newPassword: '654321' }); +await updatePassword({ password: '123456', newPassword: '654321', confirmPassword: '654321' }); // 更新个人信息 await updateProfile({ realname: '张三', mobile: '13800138000' }); diff --git a/RXThinkCMF_Laravel13_EleVue/zh/quickstart/backend-start.md b/RXThinkCMF_Laravel13_EleVue/zh/quickstart/backend-start.md index 191c336..efd3d10 100644 --- a/RXThinkCMF_Laravel13_EleVue/zh/quickstart/backend-start.md +++ b/RXThinkCMF_Laravel13_EleVue/zh/quickstart/backend-start.md @@ -240,9 +240,9 @@ lsof -i :8000 php artisan serve --port=8080 ``` -### 6. 验证码接口报"验证码服务不可用" +### 6. 验证码接口报"缓存服务(Redis)连接失败" -Redis 未启动或密码不匹配(`.env` 中 `REDIS_PASSWORD` 与 Redis 实际 `requirepass` 不一致)。验证: +Redis 未启动或密码不匹配(`.env` 中 `REDIS_PASSWORD` 与 Redis 实际 `requirepass` 不一致),接口返回「缓存服务(Redis)连接失败,请检查 Redis 配置(地址、端口、密码)后重试」,真实原因见日志 `验证码写入 Redis 失败`。验证: ```bash redis-cli ping # 输出 PONG diff --git a/RXThinkCMF_Laravel13_EleVue/zh/quickstart/laragon.md b/RXThinkCMF_Laravel13_EleVue/zh/quickstart/laragon.md index 36ca9af..35db059 100644 --- a/RXThinkCMF_Laravel13_EleVue/zh/quickstart/laragon.md +++ b/RXThinkCMF_Laravel13_EleVue/zh/quickstart/laragon.md @@ -230,7 +230,7 @@ netstat -an | findstr ":6379" # 应看到 127.0.0.1:6379 LIS ### 设置密码(实际踩坑记录) :::warning -Redis 无密码直连可用;一旦在 Redis 侧设置了 `requirepass` 而 `.env` 未同步,Laravel 所有 Redis 操作(验证码、JWT 会话、限流)会全部失败,且 CaptchaService 的 catch 会把真实错误吞掉,只报「验证码生成失败 / 验证码服务不可用」。 +Redis 无密码直连可用;一旦 Redis 侧设置了 `requirepass` 而 `.env` 未同步(或 `.env` 配了 `REDIS_PASSWORD` 而 Redis 侧没设密码),Laravel 所有 Redis 操作(验证码、JWT 会话、限流)会全部失败。验证码接口此时返回「缓存服务(Redis)连接失败,请检查 Redis 配置(地址、端口、密码)后重试」,真实错误(如 `ERR AUTH ...`)记录在日志 `验证码写入 Redis 失败` 中。 ::: 处理步骤(缺一不可): @@ -281,7 +281,7 @@ $PHP_HOME\php.exe artisan tinker --execute="try { \Illuminate\Support\Facades\Re |------|------|------| | `/` 正常,`/api/*` 返回 Apache 原生 HTML 404 | vhost 缺 `` 块,`.htaccess` 被忽略 | 补 `AllowOverride All` 块,`httpd -t` 后重启 Apache | | `Class "Redis" not found` | PHP 缺 redis 扩展 | 装 `php_redis.dll` + `php.ini` 加 `extension=redis` | -| 验证码生成失败 / 服务不可用 | Redis 密码不匹配或服务未启(日志里真实错误被 catch 吞掉) | `.env` 配 `REDIS_PASSWORD`,tinker 单测 Redis 连通 | +| 验证码接口返回「缓存服务(Redis)连接失败…」 | Redis 密码不匹配或服务未启 | 日志搜 `验证码写入 Redis 失败` 看真实错误;`.env` 配 `REDIS_PASSWORD`,tinker 单测 Redis 连通 | | artisan/pint 报 requires PHP >= 8.3 | shell PATH 的 php 是旧版 | 用 `$PHP_HOME\php.exe` 完整路径调用 | | `httpd -k restart` 报 No installed service | Apache 未注册 Windows 服务 | `taskkill` 后重新启动 `httpd.exe` | | 改了配置 / 扩展不生效 | mod_php 常驻不热加载 | 必须重启 Apache | diff --git a/RXThinkCMF_Laravel13_NaiveVue/zh/core/captcha.md b/RXThinkCMF_Laravel13_NaiveVue/zh/core/captcha.md index ccab9cb..7c5cb99 100644 --- a/RXThinkCMF_Laravel13_NaiveVue/zh/core/captcha.md +++ b/RXThinkCMF_Laravel13_NaiveVue/zh/core/captcha.md @@ -154,12 +154,18 @@ Content-Type: application/json | 验证码过期/不存在 | 1 | 验证码错误 | | 验证码不匹配 | 1 | 验证码错误 | | 获取频率超限 | 1 | 请求过于频繁,请 N 秒后重试 | +| Redis 未连接(密码错误/服务未启) | 1 | 缓存服务(Redis)连接失败,请检查 Redis 配置(地址、端口、密码)后重试 | +| 验证码生成的其它异常 | 1 | 验证码生成失败,请稍后重试 | | 未配置验证码长度(=0) | — | 跳过验证码校验(仅调试用途) | :::tip 验证码错误统一提示 无论验证码是过期、不存在还是不匹配,统一提示"验证码错误",不暴露具体原因,防止攻击者探测。 ::: +:::tip Redis 不可用的检测与提示 +生成验证码写入 Redis 失败时,会再执行一次 `PING` 复检(同样走地址、端口、密码鉴权):连接确实不通才返回「缓存服务(Redis)连接失败…」这条可操作的提示,其余情况返回通用提示;真实错误(如密码不匹配、连接拒绝)记录在日志 `验证码写入 Redis 失败` 中。 +::: + ### Redis 存储结构 ```text @@ -375,7 +381,7 @@ CAPTCHA_NOISE_DOTS=300 | 现象 | 原因 | 处理 | |------|------|------| -| 验证码接口 500 | Redis 未连接 / phpredis 扩展缺失 | 见 [2.2 Laragon 环境搭建](/zh/quickstart/laragon.html) Redis 章节 | +| 验证码接口返回「缓存服务(Redis)连接失败…」 | Redis 未连接 / 密码不匹配 / phpredis 扩展缺失 | 见 [2.2 Laragon 环境搭建](/zh/quickstart/laragon.html) Redis 章节 | | 图片显示空白 | 字体文件缺失 | 确认 `public/static/fonts/Vera.ttf` 存在 | | 一直提示验证码错误 | 前端传参名错误 | 必须是 `key` / `code`(非 captchaKey/captchaCode) | | 频繁提示"请求过于频繁" | 同 IP 短时间多次获取 | 等待窗口期结束,或调整 `CAPTCHA_RATE_LIMIT` | diff --git a/RXThinkCMF_Laravel13_NaiveVue/zh/introduction.md b/RXThinkCMF_Laravel13_NaiveVue/zh/introduction.md index dcc3ff2..56a57cd 100644 --- a/RXThinkCMF_Laravel13_NaiveVue/zh/introduction.md +++ b/RXThinkCMF_Laravel13_NaiveVue/zh/introduction.md @@ -54,7 +54,7 @@ ## 软件出处 -+ 软件名称:RXThinkCMF前后端分离Laravel13+NaiveUI版本 ++ 软件名称:RXThinkCMF前后端分离Laravel13+ElementPlus版本 + 软件作者:@小蚂蚁云团队 + 软件协议:Apache-2.0 + 官网网址:[https://www.rxthink.cn](https://www.rxthink.cn) @@ -130,6 +130,10 @@ + + + + diff --git a/RXThinkCMF_Laravel13_NaiveVue/zh/modules/index.md b/RXThinkCMF_Laravel13_NaiveVue/zh/modules/index.md index aa115e8..faed9e8 100644 --- a/RXThinkCMF_Laravel13_NaiveVue/zh/modules/index.md +++ b/RXThinkCMF_Laravel13_NaiveVue/zh/modules/index.md @@ -205,7 +205,7 @@ const menus = await getMenuList(); // menus = [{id:1, name:'控制面板', path:'/dashboard', children:[...]}] // 修改密码(成功后前端需清除令牌重新登录 —— 后端已全端吊销) -await updatePassword({ oldPassword: '123456', newPassword: '654321' }); +await updatePassword({ password: '123456', newPassword: '654321', confirmPassword: '654321' }); // 更新个人信息 await updateProfile({ realname: '张三', mobile: '13800138000' }); diff --git a/RXThinkCMF_Laravel13_NaiveVue/zh/quickstart/backend-start.md b/RXThinkCMF_Laravel13_NaiveVue/zh/quickstart/backend-start.md index 191c336..efd3d10 100644 --- a/RXThinkCMF_Laravel13_NaiveVue/zh/quickstart/backend-start.md +++ b/RXThinkCMF_Laravel13_NaiveVue/zh/quickstart/backend-start.md @@ -240,9 +240,9 @@ lsof -i :8000 php artisan serve --port=8080 ``` -### 6. 验证码接口报"验证码服务不可用" +### 6. 验证码接口报"缓存服务(Redis)连接失败" -Redis 未启动或密码不匹配(`.env` 中 `REDIS_PASSWORD` 与 Redis 实际 `requirepass` 不一致)。验证: +Redis 未启动或密码不匹配(`.env` 中 `REDIS_PASSWORD` 与 Redis 实际 `requirepass` 不一致),接口返回「缓存服务(Redis)连接失败,请检查 Redis 配置(地址、端口、密码)后重试」,真实原因见日志 `验证码写入 Redis 失败`。验证: ```bash redis-cli ping # 输出 PONG diff --git a/RXThinkCMF_Laravel13_NaiveVue/zh/quickstart/laragon.md b/RXThinkCMF_Laravel13_NaiveVue/zh/quickstart/laragon.md index 36ca9af..35db059 100644 --- a/RXThinkCMF_Laravel13_NaiveVue/zh/quickstart/laragon.md +++ b/RXThinkCMF_Laravel13_NaiveVue/zh/quickstart/laragon.md @@ -230,7 +230,7 @@ netstat -an | findstr ":6379" # 应看到 127.0.0.1:6379 LIS ### 设置密码(实际踩坑记录) :::warning -Redis 无密码直连可用;一旦在 Redis 侧设置了 `requirepass` 而 `.env` 未同步,Laravel 所有 Redis 操作(验证码、JWT 会话、限流)会全部失败,且 CaptchaService 的 catch 会把真实错误吞掉,只报「验证码生成失败 / 验证码服务不可用」。 +Redis 无密码直连可用;一旦 Redis 侧设置了 `requirepass` 而 `.env` 未同步(或 `.env` 配了 `REDIS_PASSWORD` 而 Redis 侧没设密码),Laravel 所有 Redis 操作(验证码、JWT 会话、限流)会全部失败。验证码接口此时返回「缓存服务(Redis)连接失败,请检查 Redis 配置(地址、端口、密码)后重试」,真实错误(如 `ERR AUTH ...`)记录在日志 `验证码写入 Redis 失败` 中。 ::: 处理步骤(缺一不可): @@ -281,7 +281,7 @@ $PHP_HOME\php.exe artisan tinker --execute="try { \Illuminate\Support\Facades\Re |------|------|------| | `/` 正常,`/api/*` 返回 Apache 原生 HTML 404 | vhost 缺 `` 块,`.htaccess` 被忽略 | 补 `AllowOverride All` 块,`httpd -t` 后重启 Apache | | `Class "Redis" not found` | PHP 缺 redis 扩展 | 装 `php_redis.dll` + `php.ini` 加 `extension=redis` | -| 验证码生成失败 / 服务不可用 | Redis 密码不匹配或服务未启(日志里真实错误被 catch 吞掉) | `.env` 配 `REDIS_PASSWORD`,tinker 单测 Redis 连通 | +| 验证码接口返回「缓存服务(Redis)连接失败…」 | Redis 密码不匹配或服务未启 | 日志搜 `验证码写入 Redis 失败` 看真实错误;`.env` 配 `REDIS_PASSWORD`,tinker 单测 Redis 连通 | | artisan/pint 报 requires PHP >= 8.3 | shell PATH 的 php 是旧版 | 用 `$PHP_HOME\php.exe` 完整路径调用 | | `httpd -k restart` 报 No installed service | Apache 未注册 Windows 服务 | `taskkill` 后重新启动 `httpd.exe` | | 改了配置 / 扩展不生效 | mod_php 常驻不热加载 | 必须重启 Apache |