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

WordPress每日Cron事件配置后无日志生成问题求助

排查步骤与问题修复

1. 先修复钩子名称不匹配的核心错误

你的代码里存在钩子名称不一致的致命问题:

  • 调度事件时用的是 mxpbiz_cron_hook:
    wp_schedule_event( time(), 'every_day', 'mxpbiz_cron_hook' );
    
  • 但绑定执行函数时用的是 myprefix_cron_hook:
    add_action( 'myprefix_cron_hook', 'myprefix_cron_check_expired' );
    

这会导致调度的事件找不到对应的执行逻辑,直接修改其中一方让两者名称统一即可,比如把调度代码改成:

if ( ! wp_next_scheduled( 'myprefix_cron_hook' ) ) {
    wp_schedule_event( time(), 'every_day', 'myprefix_cron_hook' );
}

2. 验证crontab的wget命令是否真的执行了

  • 查看系统crontab日志(通常在/var/log/cron或/var/log/syslog),确认5 0 * * * /usr/bin/wget https://example.com/wp-cron.php这条指令是否按时触发
  • 手动执行该wget命令,测试能否正常访问wp-cron.php:
    /usr/bin/wget https://example.com/wp-cron.php
    

如果执行失败,排查域名解析、服务器防火墙、WordPress站点是否正常运行等问题

3. 检查日志目录的权限

  • 确认/var/log/private目录存在,且Web服务器进程(通常是www-data、apache或nginx用户)拥有写入权限
  • 手动测试写入权限:
    sudo -u www-data touch /var/log/private/checked.log
    

如果命令失败,调整目录权限:

sudo chown www-data:www-data /var/log/private
sudo chmod 755 /var/log/private

4. 验证WordPress Cron的基础设置

  • 检查wp-config.php中是否禁用了WP Cron:如果存在define('DISABLE_WP_CRON', true);,要确保你的手动crontab调用是唯一触发方式,同时确认该定义没有阻止事件执行
  • 可以安装WP Crontrol这类插件,查看已调度的事件列表,确认myprefix_cron_hook是否被正确添加到调度中

5. 调试函数执行情况

  • 修改myprefix_cron_check_expired函数,写入到更易访问的路径(比如WordPress根目录),排除路径问题:
    function myprefix_cron_check_expired() {
        $log_path = ABSPATH . 'cron_debug.log';
        file_put_contents( $log_path, "checked cron " . date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND);
    }
    
  • 手动访问https://example.com/wp-cron.php?doing_wp_cron,强制触发WP Cron,之后检查日志是否生成

内容的提问来源于stack exchange,提问作者Luigino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:57:06