代码之家  ›  专栏  ›  技术社区  ›  Ahmad

当由crontab作业触发时,echo()和file_put_contents()不工作

  •  0
  • Ahmad  · 技术社区  · 6 年前

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

    m | h | d | M | w | command
    --|---|---|---|---|----------
    0 | * | * | * | * | php path/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

    回声:今天是2018年8月20日
    打印:今天是2018年8月20日

    20-08-2018.log 是创建的。

    但是,当crontab运行 作业.php ,我收到作业生成的输出的电子邮件通知,它只包含:

    打印:今天是2018年8月20日

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

    这怎么解释? 我能做什么 file_put_contents 在自动触发crontab作业时工作?

    编辑:我忘了说我查过 php_errorlog 怀疑crontab触发作业时出错,但找不到任何错误。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Manjunath Muniraju    6 年前

    @艾哈迈德:试试这个办法

    尝试在file_put_contents()函数中添加完整路径,并授予相应的文件夹权限。

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

        2
  •  0
  •   LahiruTM    6 年前

    $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();