Ai_GirlFriend/故障排查指南.md
2026-02-28 09:40:18 +08:00

341 lines
6.2 KiB
Markdown
Raw Permalink 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.

# 🔧 故障排查指南
## 当前问题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% 的问题都能解决。