From 18512d92ed70294d2cf93f9126cb25f4256eb9d0 Mon Sep 17 00:00:00 2001 From: WanWanYun Date: Thu, 13 Nov 2025 01:51:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A2=9E=E5=BC=BAacme.sh=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E9=AA=8C=E8=AF=81=E9=80=BB=E8=BE=91=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=AF=A6=E7=BB=86=E8=AF=8A=E6=96=AD=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - acme.sh安装显示成功,但文件验证立即失败 - 无法判断具体原因(路径/权限/时序问题) 改进: 1. 添加2秒等待,确保文件系统同步 2. 分步骤验证:目录 → 文件 → 权限 → 运行 3. 失败时显示目录内容,方便诊断 4. 自动修复权限问题(chmod +x) 5. 测试脚本实际可运行性(--version) 影响范围: - deploy_acme_letsencrypt() - deploy_acme_zerossl() - deploy_acme_buypass() 相关提交: - e915d5e (添加基础错误检查) - 4a73a8c (Gitee镜像加速) - a7aca93 (智能SSL fallback) --- install.sh | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 93 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index 3eb8e57..7e9af2e 100644 --- a/install.sh +++ b/install.sh @@ -1338,11 +1338,40 @@ deploy_acme_letsencrypt() { fi # 确认acme.sh可用 - if [[ ! -f ~/.acme.sh/acme.sh ]]; then - print_error "acme.sh 未正确安装" + echo "" + print_info "验证 acme.sh 安装..." + + # 等待文件系统同步 + sleep 2 + + # 检查安装目录 + if [[ ! -d ~/.acme.sh ]]; then + print_error "安装目录不存在: ~/.acme.sh" return 1 fi + # 检查主脚本文件 + if [[ ! -f ~/.acme.sh/acme.sh ]]; then + print_error "主脚本文件不存在: ~/.acme.sh/acme.sh" + print_info "目录内容:" + ls -la ~/.acme.sh/ 2>&1 | head -10 || echo "无法列出目录" + return 1 + fi + + # 检查脚本是否可执行 + if [[ ! -x ~/.acme.sh/acme.sh ]]; then + print_warning "脚本不可执行,正在添加执行权限..." + chmod +x ~/.acme.sh/acme.sh + fi + + # 测试脚本是否能运行 + if ! ~/.acme.sh/acme.sh --version &> /dev/null; then + print_error "acme.sh 无法运行" + return 1 + fi + + print_success "acme.sh 验证通过" + # 申请证书 echo "" print_info "正在申请 Let's Encrypt 证书..." @@ -1408,11 +1437,40 @@ deploy_acme_zerossl() { fi # 确认acme.sh可用 - if [[ ! -f ~/.acme.sh/acme.sh ]]; then - print_error "acme.sh 未正确安装" + echo "" + print_info "验证 acme.sh 安装..." + + # 等待文件系统同步 + sleep 2 + + # 检查安装目录 + if [[ ! -d ~/.acme.sh ]]; then + print_error "安装目录不存在: ~/.acme.sh" return 1 fi + # 检查主脚本文件 + if [[ ! -f ~/.acme.sh/acme.sh ]]; then + print_error "主脚本文件不存在: ~/.acme.sh/acme.sh" + print_info "目录内容:" + ls -la ~/.acme.sh/ 2>&1 | head -10 || echo "无法列出目录" + return 1 + fi + + # 检查脚本是否可执行 + if [[ ! -x ~/.acme.sh/acme.sh ]]; then + print_warning "脚本不可执行,正在添加执行权限..." + chmod +x ~/.acme.sh/acme.sh + fi + + # 测试脚本是否能运行 + if ! ~/.acme.sh/acme.sh --version &> /dev/null; then + print_error "acme.sh 无法运行" + return 1 + fi + + print_success "acme.sh 验证通过" + # 申请证书 echo "" print_info "正在申请 ZeroSSL 证书..." @@ -1472,11 +1530,40 @@ deploy_acme_buypass() { fi # 确认acme.sh可用 - if [[ ! -f ~/.acme.sh/acme.sh ]]; then - print_error "acme.sh 未正确安装" + echo "" + print_info "验证 acme.sh 安装..." + + # 等待文件系统同步 + sleep 2 + + # 检查安装目录 + if [[ ! -d ~/.acme.sh ]]; then + print_error "安装目录不存在: ~/.acme.sh" return 1 fi + # 检查主脚本文件 + if [[ ! -f ~/.acme.sh/acme.sh ]]; then + print_error "主脚本文件不存在: ~/.acme.sh/acme.sh" + print_info "目录内容:" + ls -la ~/.acme.sh/ 2>&1 | head -10 || echo "无法列出目录" + return 1 + fi + + # 检查脚本是否可执行 + if [[ ! -x ~/.acme.sh/acme.sh ]]; then + print_warning "脚本不可执行,正在添加执行权限..." + chmod +x ~/.acme.sh/acme.sh + fi + + # 测试脚本是否能运行 + if ! ~/.acme.sh/acme.sh --version &> /dev/null; then + print_error "acme.sh 无法运行" + return 1 + fi + + print_success "acme.sh 验证通过" + # 申请证书 echo "" print_info "正在申请 Buypass 证书..."