Files
rxthinkcmf-wiki/RXThinkCMF_ThinkPhp6_NaiveVue/zh/quickstart/faq.md
T
2026-10-10 19:17:02 +08:00

105 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2.8 常见问题 FAQ
## 环境相关
### Q: PHP 版本低于 8.2 能运行吗?
A: 不能。项目使用了 PHP 8.2 的强类型特性(如 `readonly` 属性、`DNF` 类型等),必须使用 PHP 8.2+。
### Q: 缺少 PHP 扩展怎么办?
A: 运行 `php -m` 检查已安装的扩展。缺少的扩展参考 [2.1 节](/zh/quickstart/environment.html) 安装。最常见的是缺少 `pdo_mysql` 和 `gd`。
### Q: Composer 安装很慢怎么办?
A: 配置中国镜像:
```bash
# 配置阿里云 Composer 镜像(加速依赖下载)
# -g → 修改全局配置(所有项目生效)
# repo.packagist → 设置 Packagist 仓库镜像地址
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
```
### Q: Redis 不安装可以吗?
A: 可以。Redis 是可选的缓存驱动,不安装时使用 file 缓存。将 `.env` 中 `CACHE.DRIVER` 设为 `file` 即可。
## 启动相关
### Q: `php think run` 报错 "Address already in use"
A: 端口被占用,更换端口:
```bash
# --port → 指定监听端口(默认 8000)
php think run --port 8080
```
### Q: 数据库连接失败 "Connection refused"
A: 检查以下几点:
1. MySQL 服务是否启动:`systemctl status mysql`
2. `.env` 中的数据库配置是否正确
3. 数据库用户是否有权限:`GRANT ALL ON \`rxthinkcmf.thinkphp6.naivevue\`.* TO 'root'@'localhost'`
### Q: 登录返回 401
A: 可能原因:
1. Token 过期 → 重新登录
2. 请求头格式错误 → 确保是 `Authorization: Bearer <token>`
3. JWT 密钥不匹配 → 检查 `.env` 中的 `JWT.SECRET`
## 前端相关
### Q: `pnpm install` 报错
A: 清除缓存重新安装:
```bash
# 删除依赖目录和锁文件,重新安装
rm -rf node_modules pnpm-lock.yaml # 删除旧的依赖和锁文件
pnpm install # 重新安装所有依赖
```
### Q: 前端请求后端 404
A: 检查以下几点:
1. 后端服务是否启动
2. Vite 代理配置是否正确(`vite.config.ts` 中的 `target`)
3. API 路径是否正确(应以 `/api` 开头)
### Q: 页面白屏
A: 打开浏览器控制台(F12)查看错误信息,常见原因:
1. JS 加载失败 → 检查网络请求
2. 路由配置错误 → 检查后端菜单数据
3. Token 过期 → 重新登录
## Oracle 相关
### Q: ThinkPHP 连接 Oracle 需要哪个 PHP 扩展?
A: 需要 `pdo_oci` 扩展。ThinkPHP 的 Oracle 连接器通过 PDO 连接数据库(DSN 前缀 `oci:dbname=`),XAMPP 8.2 已自带 `php_pdo_oci.dll`,只需在 php.ini 中启用即可。
### Q: XAMPP 下 pdo_oci 扩展加载失败怎么办?
A: 按以下顺序排查:
1. 是否安装了 Oracle Instant Client 19c(x64)并解压到固定路径
2. 该路径是否已添加到**系统变量** PATH 中(不是用户变量)
3. 是否安装了 VC++ 2015-2022 Redistributable(x64)
4. `php.ini` 中 `extension=pdo_oci` 是否已去掉分号
5. XAMPP 是否**完全关闭再启动**(不是只点 Apache 的 Start/Stop)
### Q: 命令行 `php -m` 能看到 pdo_oci,但浏览器 phpinfo() 里找不到?
A: Apache 作为 Windows 服务运行时,读取的是服务启动时的系统 PATH。如果在 Apache 启动**之后**才修改了 PATH 环境变量,Apache 不会感知到。解决方法:在 XAMPP 控制面板中完全停止 Apache,再重新启动。
### Q: Oracle Instant Client 应该下载哪个版本?
A: 推荐下载 **19c** 的 **Basic Package**(x64)。下载地址:https://www.oracle.com/database/technologies/instant-client/downloads.html
### Q: 为什么 Instant Client 必须解压到固定路径?
A: 因为系统 PATH 环境变量写入的是绝对路径。如果解压到桌面或下载文件夹,后续清理、移动或重命名都会导致 PATH 失效,PHP 无法加载 Oracle 客户端库。推荐路径:`C:\oracle\instantclient_19_20`。