#!/bin/bash # 一键部署修复脚本 # 用法: bash deploy_fix.sh set -e # 遇到错误立即退出 SERVER="root@47.96.77.165" SERVER_DIR="/www/wwwroot/fengketrade" FILE_TO_UPLOAD="addons/shopro/library/ccblife/CcbPaymentService.php" echo "====================================" echo "建行支付修复 - 一键部署" echo "====================================" echo "" # 检查本地文件是否存在 if [ ! -f "$FILE_TO_UPLOAD" ]; then echo "❌ 本地文件不存在: $FILE_TO_UPLOAD" exit 1 fi echo "【步骤1】检查本地代码..." echo "-----------------------------------" if grep -q "urlencode" <(sed -n '279p' "$FILE_TO_UPLOAD"); then echo "❌ 本地代码第279行仍包含urlencode,请先修复本地代码" exit 1 else echo "✅ 本地代码已修复" fi echo "" echo "【步骤2】上传诊断脚本到服务器..." echo "-----------------------------------" scp server_diagnose.sh $SERVER:$SERVER_DIR/ || { echo "❌ 上传诊断脚本失败" exit 1 } echo "✅ 诊断脚本上传成功" echo "" echo "【步骤3】运行服务器端诊断..." echo "-----------------------------------" ssh $SERVER "cd $SERVER_DIR && bash server_diagnose.sh" || { echo "❌ 服务器诊断失败" exit 1 } echo "" echo "【步骤4】上传修复后的文件..." echo "-----------------------------------" echo "正在上传: $FILE_TO_UPLOAD" scp $FILE_TO_UPLOAD $SERVER:$SERVER_DIR/$FILE_TO_UPLOAD || { echo "❌ 文件上传失败" exit 1 } echo "✅ 文件上传成功" echo "" echo "【步骤5】重启PHP-FPM..." echo "-----------------------------------" ssh $SERVER "systemctl restart php-fpm || service php-fpm restart" || { echo "⚠️ PHP-FPM重启可能失败,请手动检查" } echo "✅ PHP-FPM重启完成" echo "" echo "【步骤6】清除OPcache..." echo "-----------------------------------" ssh $SERVER "php -r 'if(function_exists(\"opcache_reset\")){opcache_reset();echo \"OPcache cleared\n\";}'" || { echo "⚠️ OPcache清除可能失败" } echo "" echo "【步骤7】验证部署..." echo "-----------------------------------" echo "检查服务器上的代码..." ssh $SERVER "sed -n '279p' $SERVER_DIR/$FILE_TO_UPLOAD" echo "" echo "====================================" echo "✅ 部署完成!" echo "====================================" echo "" echo "下一步:" echo "1. 触发一次支付测试" echo "2. 监控日志: ssh $SERVER 'tail -f $SERVER_DIR/runtime/log/\$(date +%Y%m)/\$(date +%d).log | grep 最终支付串'" echo "3. 检查是否还有 %25u (错误) 还是 %u (正确)" echo ""