我每分钟都在运行一个运行循环的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);
}
答案 0 :(得分:2)
以防万一将来有人遇到相同的问题,问题出在权限上,要解决此问题,您需要更改php脚本文件的权限,它必须具有写权限),才能这样做:
使用FTP客户端(即Filezilla): 右键单击脚本文件,然后选择“文件许可权”,将写许可权授予该用户和一组用户(即766)
使用终端:
chmod 766 / path / to / php_script
答案 1 :(得分:0)
首先确保日志文件夹存在,或者您可以通过以下代码进行检查:
if(!file_exists(__DIR__ . '/log') && !is_dir(__DIR__ . '/log')){
mkdir(__DIR__ . '/log');
}
第二次使用绝对路径:
file_put_contents(__DIR__ . '/log/exchange.txt', $log, FILE_APPEND);