mirror of
https://gitee.com/liuxioabin/fengketrade.git
synced 2026-04-17 12:57:32 +08:00
113 lines
3.1 KiB
Bash
Executable File
113 lines
3.1 KiB
Bash
Executable File
#!/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 "===================================="
|