由crontab作业触发时,echo()和file_put_contents()不起作用

时间:2018-08-21 04:13:18

标签: php cron

我已经设置了一个crontab作业以每小时运行一次。

m | h | d | M | w | command
--|---|---|---|---|----------
0 | * | * | * | * | php path/job.php

在job.php内部,我有以下代码:

<?php
    $today = date('Y-m-d');
    echo   "echo: Today is $today <br>";
    printf("printf: Today is $today \n");

    file_put_contents("/path/$today.log","log file created");
    exit();

当我在浏览器上访问job.php时,看到的是预期的输出:

  

回声:今天是20-08-2018
printf:今天是20-08-2018

并创建一个新文件20-08-2018.log

但是,当crontab运行此job.php时,我收到该作业生成的输出的电子邮件通知,并且仅包含:

  

printf:今天是20-08-2018

此外,我检查文件是否已生成/添加,但是找不到任何文件生成的证据(即使我在等待crontab运行作业之前删除了所有日志文件)。

这怎么解释? 自动触发crontab作业时,如何使file_put_contents工作?

编辑:我忘了提到我已经检查过php_errorlog,怀疑当crontab触发作业时出现了问题,但是找不到任何错误。

2 个答案:

答案 0 :(得分:2)

@Ahmad:尝试此解决方案

尝试在file_put_contents()函数中添加完整路径并给予适当的文件夹权限。

例如: file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "{$today}.log", "log file created")

答案 1 :(得分:0)

尝试一下

$today = date('Y-m-d');
$myfile = fopen("/path/$today.log", "a") or die("Unable to open file!");
$txt = "Today is $today <br> \n";
echo   "echo: Today is $today <br> \n";
fwrite($myfile, $txt);
fclose($myfile);
exit();