fengketrade/server_diagnose.sh

113 lines
3.1 KiB
Bash
Raw Normal View History

2025-10-27 15:42:14 +08:00
#!/bin/bash
# 服务器端建行支付诊断脚本
# 在服务器上运行: bash server_diagnose.sh
echo "===================================="
echo "建行支付服务器端诊断"
echo "===================================="
echo ""
PROJECT_DIR="/www/wwwroot/fengketrade"
FILE="$PROJECT_DIR/addons/shopro/library/ccblife/CcbPaymentService.php"
if [ ! -f "$FILE" ]; then
echo "❌ 文件不存在: $FILE"
exit 1
fi
echo "【1. 文件信息】"
echo "-----------------------------------"
ls -lh "$FILE"
echo ""
echo "【2. 最后修改时间】"
echo "-----------------------------------"
stat "$FILE" | grep "Modify"
echo ""
echo "【3. 检查第279行(最终支付串)】"
echo "-----------------------------------"
echo "应该是: \$finalParts[] = \$key . '=' . \$value;"
echo "实际是:"
sed -n '279p' "$FILE"
echo ""
if grep -q "urlencode" <(sed -n '279p' "$FILE"); then
echo "❌ 错误: 第279行包含urlencode,需要修复!"
else
echo "✅ 正确: 第279行无URL编码"
fi
echo ""
echo "【4. 检查第286行(非MAC参数)】"
echo "-----------------------------------"
sed -n '286p' "$FILE"
if grep -q "urlencode" <(sed -n '286p' "$FILE"); then
echo "❌ 错误: 第286行包含urlencode"
else
echo "✅ 正确: 第286行无URL编码"
fi
echo ""
echo "【5. 检查ENCPUB的URL-safe处理】"
echo "-----------------------------------"
if grep -q "str_replace(\['+', '/'\], \['-', '_'\]" "$FILE"; then
echo "✅ 找到URL-safe BASE64转换"
grep -n "str_replace(\['+', '/'\]" "$FILE" | head -1
else
echo "❌ 未找到URL-safe BASE64转换"
fi
echo ""
echo "【6. PHP版本和OPcache状态】"
echo "-----------------------------------"
php -v | head -1
php -r "echo 'OPcache enabled: ' . (function_exists('opcache_reset') ? 'Yes' : 'No') . \"\n\";"
echo ""
echo "【7. 最近的支付日志】"
echo "-----------------------------------"
LOGFILE="$PROJECT_DIR/runtime/log/$(date +%Y%m)/$(date +%d).log"
if [ -f "$LOGFILE" ]; then
echo "日志文件: $LOGFILE"
echo "最近的支付串:"
tail -50 "$LOGFILE" | grep "最终支付串" | tail -1
echo ""
echo "检查是否有URL编码问题:"
if tail -50 "$LOGFILE" | grep "最终支付串" | grep -q "%25u"; then
echo "❌ 发现URL编码问题: %被编码成%25"
else
echo "✅ 未发现%25,可能已修复或未测试"
fi
else
echo "日志文件不存在: $LOGFILE"
fi
echo ""
echo "【8. 建议操作】"
echo "-----------------------------------"
echo "如果发现代码有问题,执行以下步骤:"
echo ""
echo "1. 检查git状态:"
echo " cd $PROJECT_DIR"
echo " git status"
echo ""
echo "2. 拉取最新代码:"
echo " git pull"
echo ""
echo "3. 重启PHP-FPM:"
echo " systemctl restart php-fpm"
echo " # 或者"
echo " service php-fpm restart"
echo ""
echo "4. 清除OPcache:"
echo " php -r 'opcache_reset();'"
echo ""
echo "5. 再次测试支付,查看日志:"
echo " tail -f $PROJECT_DIR/runtime/log/$(date +%Y%m)/$(date +%d).log | grep '最终支付串'"
echo ""
echo "===================================="
echo "诊断完成"
echo "===================================="