You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress站点自动化备份代码问题及配置咨询

针对你在NameCheap cPanel WordPress环境中遇到的备份代码失效问题,下面是具体排查、修复方案及关键要点:

一、原代码的核心问题
  • 文件名含非法字符:$site_url自带http:///https://和斜杠,导致ZIP文件无法正常创建
  • 未指定备份路径:默认将ZIP存在网站根目录,未使用你创建的backup文件夹,甚至会打包备份文件夹自身引发循环
  • 无错误捕获逻辑:没处理ZIP创建、远程上传的失败场景,无法定位具体问题
  • Cron调度不严谨:仅用time()设置首次执行时间,可能不符合预期;且WP伪Cron需要网站有访问请求才能触发,低流量站点可能失效
二、域名/远程地址替换位置

原代码中wp_remote_post的目标地址就是需要替换的位置:

$response = wp_remote_post('http://example.com/backups/', array(...));

把http://example.com/backups/替换为你的远程备份接收接口URL;如果不需要远程上传,直接删除这段代码即可。

三、自定义要点
  • 清理文件名:必须移除URL中的协议头、斜杠等非法字符,避免文件创建失败
  • 权限设置:确保public_html/backup文件夹权限设为755(cPanel文件管理器可直接设置),保证WordPress运行用户有写入权限
  • 排除冗余文件:打包时排除备份文件夹、wp-content/cache缓存目录等不必要内容,减少备份体积
  • 错误日志排查:代码中加入错误日志记录,可在cPanel的Error Log中查看失败原因
  • 用真实Cron替代伪Cron:如果网站流量极低,WP伪Cron可能无法按时触发,可在cPanel的Cron Jobs中添加任务:
    wget -q -O - https://你的域名/wp-cron.php?doing_wp_cron >/dev/null 2>&1
    
    执行周期设为每天凌晨2点即可。
四、备份文件夹的正确路径

你在public_html下创建的backup文件夹,绝对路径可通过WordPress内置常量ABSPATH . 'backup/'获取(ABSPATH直接指向public_html目录)。代码中需先判断文件夹是否存在,不存在则自动创建。

五、修正后的完整代码
function create_backup() {
    // 获取站点信息并清理URL非法字符
    $site_url = get_site_url();
    $site_name = get_bloginfo('name');
    $site_url_clean = str_replace(array('http://', 'https://', '/'), '', $site_url);
    
    // 定义备份文件夹路径与文件名
    $backup_dir = ABSPATH . 'backup/';
    $filename = sanitize_file_name($site_name . '-' . $site_url_clean . '-' . date('Y-m-d') . '.zip');
    $file_path = $backup_dir . $filename;

    // 创建备份文件夹(如果不存在)
    if (!file_exists($backup_dir)) {
        mkdir($backup_dir, 0755, true);
    }

    // 创建ZIP压缩包
    $zip = new ZipArchive;
    if (!$zip->open($file_path, ZipArchive::CREATE | ZipArchive::OVERWRITE)) {
        error_log('备份失败:无法创建ZIP文件 - ' . $file_path);
        return;
    }

    // 添加网站所有文件,排除备份文件夹和缓存目录
    $zip->addGlob(ABSPATH . '/*', GLOB_BRACE, array('add_path' => '/', 'remove_path' => ABSPATH));
    if ($zip->locateName('backup/')) {
        $zip->deleteName('backup/');
    }
    if ($zip->locateName('wp-content/cache/')) {
        $zip->deleteName('wp-content/cache/');
    }

    $zip->close();

    // (可选)远程上传备份,替换为你的远程地址
    // $response = wp_remote_post('https://你的远程备份地址/', array(
    //     'method' => 'POST',
    //     'timeout' => 120, // 大文件需延长超时时间
    //     'headers' => array(
    //         'Content-Type' => 'application/zip',
    //         'Content-Disposition' => 'attachment; filename="' . $filename . '"'
    //     ),
    //     'body' => file_get_contents($file_path),
    // ));

    // 处理远程上传结果
    // if (is_wp_error($response)) {
    //     error_log('备份上传失败:' . $response->get_error_message());
    // } else {
    //     error_log('备份上传成功,响应码:' . wp_remote_retrieve_response_code($response));
    // }
}

// 调度备份事件,每天凌晨2点执行
if (!wp_next_scheduled('create_backup_event')) {
    $run_time = strtotime('02:00:00');
    // 如果当前时间已过凌晨2点,设置为次日执行
    if ($run_time < time()) {
        $run_time += 86400;
    }
    wp_schedule_event($run_time, 'daily', 'create_backup_event');
}
add_action('create_backup_event', 'create_backup');

内容的提问来源于stack exchange,提问作者S A M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:55:18