mirror of
https://gitee.com/liuxioabin/fengketrade.git
synced 2026-04-17 21:03:17 +08:00
196 lines
3.8 KiB
Markdown
196 lines
3.8 KiB
Markdown
# 服务器修复指南
|
|
|
|
## 服务器信息
|
|
- **地址**: 47.96.77.165
|
|
- **用户**: root
|
|
- **密码**: atBSGSu0$!T
|
|
- **项目路径**: /www/wwwroot/fengketrade
|
|
|
|
## 步骤1: 上传诊断脚本到服务器
|
|
|
|
在本地执行:
|
|
```bash
|
|
scp server_diagnose.sh root@47.96.77.165:/www/wwwroot/fengketrade/
|
|
```
|
|
|
|
## 步骤2: 登录服务器
|
|
|
|
```bash
|
|
ssh root@47.96.77.165
|
|
# 密码: atBSGSu0$!T
|
|
```
|
|
|
|
## 步骤3: 运行诊断脚本
|
|
|
|
```bash
|
|
cd /www/wwwroot/fengketrade
|
|
bash server_diagnose.sh
|
|
```
|
|
|
|
## 步骤4: 根据诊断结果修复
|
|
|
|
### 如果使用Git管理代码:
|
|
|
|
```bash
|
|
cd /www/wwwroot/fengketrade
|
|
|
|
# 查看当前状态
|
|
git status
|
|
|
|
# 拉取最新代码
|
|
git pull
|
|
|
|
# 或者如果有冲突,强制更新
|
|
git fetch --all
|
|
git reset --hard origin/main # 或 origin/master
|
|
```
|
|
|
|
### 如果需要手动替换文件:
|
|
|
|
```bash
|
|
# 在本地执行(上传修复后的文件)
|
|
scp addons/shopro/library/ccblife/CcbPaymentService.php \
|
|
root@47.96.77.165:/www/wwwroot/fengketrade/addons/shopro/library/ccblife/
|
|
```
|
|
|
|
## 步骤5: 重启PHP服务
|
|
|
|
```bash
|
|
# 方法1: systemctl
|
|
systemctl restart php-fpm
|
|
|
|
# 方法2: service
|
|
service php-fpm restart
|
|
|
|
# 方法3: 如果是宝塔面板
|
|
bt restart php-fpm
|
|
|
|
# 查看PHP进程
|
|
ps aux | grep php-fpm
|
|
```
|
|
|
|
## 步骤6: 清除OPcache缓存
|
|
|
|
```bash
|
|
# 直接清除
|
|
php -r "opcache_reset(); echo 'OPcache cleared\n';"
|
|
|
|
# 或者创建清除脚本
|
|
cat > /www/wwwroot/fengketrade/public/clear_cache.php << 'EOF'
|
|
<?php
|
|
if (function_exists('opcache_reset')) {
|
|
opcache_reset();
|
|
echo 'OPcache cleared successfully!';
|
|
} else {
|
|
echo 'OPcache is not enabled';
|
|
}
|
|
phpinfo(INFO_GENERAL);
|
|
?>
|
|
EOF
|
|
|
|
# 通过浏览器访问: http://fengketrade.com/clear_cache.php
|
|
# 清除后记得删除这个文件:
|
|
# rm /www/wwwroot/fengketrade/public/clear_cache.php
|
|
```
|
|
|
|
## 步骤7: 实时监控日志验证
|
|
|
|
```bash
|
|
cd /www/wwwroot/fengketrade
|
|
|
|
# 监控支付日志
|
|
tail -f runtime/log/$(date +%Y%m)/$(date +%d).log | grep -E "建行支付.*最终支付串|MAC签名字符串"
|
|
```
|
|
|
|
## 步骤8: 触发测试支付
|
|
|
|
保持步骤7的日志监控,然后在手机或浏览器发起一次支付。
|
|
|
|
观察日志输出:
|
|
|
|
**✅ 正确的日志:**
|
|
```
|
|
[建行支付] MAC签名字符串: ...PROINFO=%u6F2B...
|
|
[建行支付] 最终支付串: ...PROINFO=%u6F2B...
|
|
```
|
|
|
|
**❌ 错误的日志:**
|
|
```
|
|
[建行支付] MAC签名字符串: ...PROINFO=%u6F2B...
|
|
[建行支付] 最终支付串: ...PROINFO=%25u6F2B... ← %被编码成了%25
|
|
```
|
|
|
|
## 关键检查点
|
|
|
|
修复后的代码第279行应该是:
|
|
```php
|
|
$finalParts[] = $key . '=' . $value;
|
|
```
|
|
|
|
**不应该**是:
|
|
```php
|
|
$finalParts[] = $key . '=' . urlencode($value); // ❌ 错误
|
|
```
|
|
|
|
## 快速验证命令
|
|
|
|
```bash
|
|
# 检查第279行
|
|
sed -n '279p' /www/wwwroot/fengketrade/addons/shopro/library/ccblife/CcbPaymentService.php
|
|
|
|
# 应该输出: $finalParts[] = $key . '=' . $value;
|
|
# 如果包含 urlencode,说明代码还未更新
|
|
```
|
|
|
|
## 常见问题
|
|
|
|
### Q1: git pull失败
|
|
```bash
|
|
# 查看冲突
|
|
git status
|
|
|
|
# 放弃本地修改,强制更新
|
|
git reset --hard
|
|
git pull
|
|
```
|
|
|
|
### Q2: PHP-FPM重启失败
|
|
```bash
|
|
# 查看错误日志
|
|
tail -50 /var/log/php-fpm/error.log
|
|
|
|
# 检查PHP-FPM状态
|
|
systemctl status php-fpm
|
|
|
|
# 检查配置语法
|
|
php-fpm -t
|
|
```
|
|
|
|
### Q3: 修复后仍然报签名错误
|
|
```bash
|
|
# 1. 确认代码已更新
|
|
md5sum /www/wwwroot/fengketrade/addons/shopro/library/ccblife/CcbPaymentService.php
|
|
|
|
# 2. 确认PHP进程已重启
|
|
ps aux | grep php-fpm | grep -v grep
|
|
|
|
# 3. 检查文件权限
|
|
ls -lh /www/wwwroot/fengketrade/addons/shopro/library/ccblife/CcbPaymentService.php
|
|
|
|
# 4. 查看完整日志
|
|
tail -100 /www/wwwroot/fengketrade/runtime/log/$(date +%Y%m)/$(date +%d).log
|
|
```
|
|
|
|
## 退出服务器
|
|
|
|
```bash
|
|
exit
|
|
```
|
|
|
|
## 注意事项
|
|
|
|
1. **备份**: 修改前建议备份当前文件
|
|
2. **权限**: 确保PHP有权限读取修改后的文件
|
|
3. **缓存**: 务必重启PHP-FPM和清除OPcache
|
|
4. **验证**: 修改后一定要查看日志验证是否生效
|