Ai_GirlFriend/故障排查指南.md

341 lines
6.2 KiB
Markdown
Raw Permalink Normal View History

2026-02-28 09:40:18 +08:00
# 🔧 故障排查指南
## 当前问题PHP 返回 500 错误
### 问题现象
- 访问 http://127.0.0.1:30100 显示"您所浏览的页面暂时无法访问"
- PHP 服务日志显示 `[500]: GET /index/user/index.html`
---
## 🔍 排查步骤
### 第一步:运行诊断脚本
访问测试页面:
```
http://127.0.0.1:30100/test_db.php
```
这个页面会检查:
- ✅ PHP 版本和扩展
- ✅ 数据库连接
- ✅ 数据表列表
- ✅ ThinkPHP 框架文件
- ✅ Composer 依赖
- ✅ 目录权限
根据测试结果,找出具体问题。
---
### 第二步:检查 Composer 依赖
最常见的问题是 Composer 依赖未安装。
**检查方法:**
```cmd
cd xunifriend_RaeeC
dir vendor
```
如果 `vendor` 目录不存在或为空,需要安装依赖:
```cmd
cd xunifriend_RaeeC
composer install
```
**如果 composer 很慢,使用国内镜像:**
```cmd
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer install
```
---
### 第三步:检查 PHP 扩展
**查看已加载的扩展:**
```cmd
php -m
```
**必需的扩展:**
- mysqli
- pdo_mysql
- mbstring
- curl
- openssl
- fileinfo
- json
**如果缺少扩展,编辑 php.ini**
1. 找到 PHP 安装目录下的 `php.ini` 文件
2. 搜索扩展名(如 `extension=mysqli`
3. 删除前面的分号 `;` 取消注释
4. 保存文件
5. 重启 PHP 服务
---
### 第四步:检查数据库连接
**测试数据库连接:**
```cmd
mysql -u root -prootx77 -e "USE ai_friend; SELECT COUNT(*) FROM nf_user;"
```
**如果连接失败:**
1. **检查 MySQL 服务是否运行**
```cmd
net start MySQL80
```
2. **检查密码是否正确**
```cmd
mysql -u root -prootx77
```
3. **检查数据库是否存在**
```sql
SHOW DATABASES;
```
4. **如果数据库不存在,创建它**
```sql
CREATE DATABASE ai_friend CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
---
### 第五步:检查目录权限
**确保以下目录可写:**
```
xunifriend_RaeeC/runtime/
xunifriend_RaeeC/runtime/cache/
xunifriend_RaeeC/runtime/log/
xunifriend_RaeeC/public/uploads/
```
**Windows 下通常不需要特殊设置,但可以检查:**
1. 右键点击目录
2. 选择"属性"
3. 取消"只读"属性(如果勾选了)
---
### 第六步:查看 PHP 错误日志
**查看 ThinkPHP 日志:**
```
xunifriend_RaeeC/runtime/log/
```
打开最新的日志文件,查看错误信息。
**常见错误及解决方法:**
#### 错误 1: Class 'think\App' not found
**原因:** Composer 依赖未安装
**解决:**
```cmd
cd xunifriend_RaeeC
composer install
```
#### 错误 2: SQLSTATE[HY000] [2002] Connection refused
**原因:** 数据库连接失败
**解决:**
1. 检查 MySQL 服务是否运行
2. 检查 `.env` 文件中的数据库配置
3. 测试数据库连接
#### 错误 3: SQLSTATE[42S02]: Base table or view not found
**原因:** 数据表不存在
**解决:**
1. 确认数据库已导入
2. 检查表前缀是否正确nf_
#### 错误 4: Call to undefined function mysqli_connect()
**原因:** mysqli 扩展未启用
**解决:**
1. 编辑 php.ini
2. 取消注释 `extension=mysqli`
3. 重启 PHP 服务
---
## 🛠️ 快速修复方案
### 方案 1重新安装 Composer 依赖
```cmd
cd xunifriend_RaeeC
rmdir /s /q vendor
composer install
```
### 方案 2清理缓存
```cmd
cd xunifriend_RaeeC
rmdir /s /q runtime\cache
rmdir /s /q runtime\log
mkdir runtime\cache
mkdir runtime\log
```
### 方案 3重置数据库配置
编辑 `xunifriend_RaeeC/.env`,确保配置正确:
```env
[database]
type = mysql
hostname = localhost
database = ai_friend
username = root
password = rootx77
hostport = 3306
charset = utf8mb4
prefix = nf_
debug = true
```
### 方案 4使用简化的测试页面
访问http://127.0.0.1:30100/test.php
查看是否能正常访问 PHP。
---
## 📋 完整检查清单
按顺序检查以下项目:
### PHP 环境
- [ ] PHP 版本 >= 8.0
- [ ] php.ini 已配置
- [ ] 必需扩展已启用
- [ ] PHP 可以正常运行
### Composer 依赖
- [ ] Composer 已安装
- [ ] vendor 目录存在
- [ ] 依赖包已安装完整
### 数据库
- [ ] MySQL 服务运行中
- [ ] 数据库 ai_friend 存在
- [ ] 用户名密码正确
- [ ] 数据表已导入30+ 张表)
- [ ] 表前缀为 nf_
### 配置文件
- [ ] xunifriend_RaeeC/.env 存在
- [ ] 数据库配置正确
- [ ] 字符集为 utf8mb4
### 目录权限
- [ ] runtime 目录可写
- [ ] runtime/cache 目录可写
- [ ] runtime/log 目录可写
- [ ] public/uploads 目录可写
### ThinkPHP 框架
- [ ] thinkphp 目录存在
- [ ] application 目录存在
- [ ] install.lock 文件存在
---
## 🔄 重启服务
修改配置后,需要重启 PHP 服务:
1. 在 PHP 服务窗口按 `Ctrl+C` 停止
2. 重新运行启动脚本:
```cmd
启动项目.bat
```
或者手动启动:
```cmd
cd xunifriend_RaeeC\public
php -S 0.0.0.0:30100 router.php
```
---
## 📞 仍然无法解决?
### 1. 查看详细错误信息
`xunifriend_RaeeC/.env` 中启用调试模式:
```env
app_debug = true
app_trace = true
```
重启服务后,错误信息会直接显示在浏览器中。
### 2. 查看日志文件
```
xunifriend_RaeeC/runtime/log/
```
打开最新的日志文件,查找错误堆栈。
### 3. 使用测试脚本
访问http://127.0.0.1:30100/test_db.php
查看详细的环境检查结果。
### 4. 检查端口占用
```cmd
netstat -ano | findstr :30100
```
如果端口被占用,终止进程或更换端口。
---
## ✅ 成功标志
当以下条件都满足时,说明 PHP 后台已正常运行:
1. ✅ 访问 http://127.0.0.1:30100 不再显示 500 错误
2. ✅ 访问 http://127.0.0.1:30100/test_db.php 显示所有检查通过
3. ✅ PHP 服务日志显示 `[200]` 状态码
4. ✅ 可以访问管理后台 http://127.0.0.1:30100/admin
---
## 🎯 下一步
PHP 后台正常运行后:
1. **测试 Python 后端**
访问http://127.0.0.1:30101/docs
2. **测试 API 接口**
在 API 文档中测试各个接口
3. **访问管理后台**
http://127.0.0.1:30100/admin
4. **开始开发**
根据需求修改代码
---
**记住:大多数 500 错误都是因为 Composer 依赖未安装!**
先运行 `composer install`90% 的问题都能解决。