fengketrade/SERVER_FIX_GUIDE.md
2025-10-27 15:42:14 +08:00

3.8 KiB

服务器修复指南

服务器信息

  • 地址: 47.96.77.165
  • 用户: root
  • 密码: atBSGSu0$!T
  • 项目路径: /www/wwwroot/fengketrade

步骤1: 上传诊断脚本到服务器

在本地执行:

scp server_diagnose.sh root@47.96.77.165:/www/wwwroot/fengketrade/

步骤2: 登录服务器

ssh root@47.96.77.165
# 密码: atBSGSu0$!T

步骤3: 运行诊断脚本

cd /www/wwwroot/fengketrade
bash server_diagnose.sh

步骤4: 根据诊断结果修复

如果使用Git管理代码:

cd /www/wwwroot/fengketrade

# 查看当前状态
git status

# 拉取最新代码
git pull

# 或者如果有冲突,强制更新
git fetch --all
git reset --hard origin/main  # 或 origin/master

如果需要手动替换文件:

# 在本地执行(上传修复后的文件)
scp addons/shopro/library/ccblife/CcbPaymentService.php \
    root@47.96.77.165:/www/wwwroot/fengketrade/addons/shopro/library/ccblife/

步骤5: 重启PHP服务

# 方法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缓存

# 直接清除
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: 实时监控日志验证

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行应该是:

$finalParts[] = $key . '=' . $value;

不应该是:

$finalParts[] = $key . '=' . urlencode($value);  // ❌ 错误

快速验证命令

# 检查第279行
sed -n '279p' /www/wwwroot/fengketrade/addons/shopro/library/ccblife/CcbPaymentService.php

# 应该输出: $finalParts[] = $key . '=' . $value;
# 如果包含 urlencode,说明代码还未更新

常见问题

Q1: git pull失败

# 查看冲突
git status

# 放弃本地修改,强制更新
git reset --hard
git pull

Q2: PHP-FPM重启失败

# 查看错误日志
tail -50 /var/log/php-fpm/error.log

# 检查PHP-FPM状态
systemctl status php-fpm

# 检查配置语法
php-fpm -t

Q3: 修复后仍然报签名错误

# 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

退出服务器

exit

注意事项

  1. 备份: 修改前建议备份当前文件
  2. 权限: 确保PHP有权限读取修改后的文件
  3. 缓存: 务必重启PHP-FPM和清除OPcache
  4. 验证: 修改后一定要查看日志验证是否生效