【问题标题】:PHP cron job not running log via file_put_contents()PHP cron 作业未通过 file_put_contents() 运行日志
【发布时间】:2017-05-23 10:01:18
【问题描述】:

我每分钟运行一个 cron 作业,它运行一个循环;我将每个循环的结果输出到日志文件中。这个函数在一个类中,并且在手动调用该函数时运行得非常好。但是,当通过 cron 作业调用该函数时,file_put_contents() 什么都不做(该函数的其余部分工作正常,即表插入)。

protected function updatePair( $time, $pair_reference, $price, $exchange_id ) {

    $exchange_reference = get_field('reference', $exchange_id);

    global $wpdb;
    $table = $wpdb->prefix . $pair_reference . '_' . $exchange_reference;

    // Insert time and price into table
    $wpdb->insert($table, array(
        "time"  => $time,
        "price" => $price
    ));

    //Write action to txt log
    $log  = "Pair: ".$pair_reference.' - '.date("F j, Y, g:i a").PHP_EOL.
            "Attempt: Finished".PHP_EOL.
            "-------------------------".PHP_EOL;
    //-
    file_put_contents('log/exchange.txt', $log, FILE_APPEND);

}

【问题讨论】:

  • 您是否有写入日志文件夹的权限。如果它没有像这样更改权限,请检查您的权限 chmod 0777 -R log/
  • 该函数在手动调用时写入日志文件,即 $class->updatePair( ... ) 但不是在 cron 决定这样做时。 cron 需要不同的权限吗?请原谅新手的问题。
  • 你需要给apache用户权限
  • 没有这样的运气,权限等都按规定设置。
  • 你能不能也显示你的 crontab 调用

标签: php cron


【解决方案1】:

以防万一以后有人遇到同样的问题,问题出在权限上,要解决这个问题,你需要更改php脚本文件的权限,它必须具有写权限),这样做:

  1. 使用 FTP 客户端(即 Filezilla): 右击脚本文件,选择文件权限,给用户和用户组写权限(即766)

  2. 使用终端

    chmod 766 /path/to/php_script

【讨论】:

    【解决方案2】:

    首先确保日志文件夹存在,或者您可以通过以下代码检查:

    if(!file_exists(__DIR__ . '/log') && !is_dir(__DIR__ . '/log')){
        mkdir(__DIR__ . '/log');
    }
    

    第二次使用绝对路径:

    file_put_contents(__DIR__ . '/log/exchange.txt', $log, FILE_APPEND);
    

    【讨论】:

    • 函数仍然没有在 cron 上运行,但在手动调用时很好。确实很奇怪。
    • 如何添加你的cronjob?你用crontab -u user -e吗?
    • WordPress 的 WP cron,在这个特定的实例中没有使用 crontab。
    • 这是 wordpress cron 问题,不仅仅与 cron 有关。请用 wordpress 标记您的问题,以帮助您成为 wordpress 人。看到这个,也许有用:Can't access wp_filesystem in cron function
    猜你喜欢
    • 2016-05-27
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 2018-05-13
    • 2015-01-11
    • 1970-01-01
    相关资源
    最近更新 更多