来自cronjob的PHP ob_*?

pla*_*men 0 php cron crontab

ob_*当它作为cronjob运行时,我遇到了一些函数问题:

<?php
function getLayout($file, $extract=array()) {

    if (is_file($file)) {

        if (count($extract) > 0) {
            extract($extract);
        }

        ob_start();
        include $file;
        $contents = ob_get_contents();
        ob_end_clean();

        return $contents;
    }

    return false;
}

file_put_contents('somecachefile.html', getLayout('somefile.php', array('var1'=>$val1, 'var2'=>$val2)));
?> 
Run Code Online (Sandbox Code Playgroud)

cronjob设置如下:(每分钟运行)

* * * * * /usr/bin/php /path/to/cron.php > /dev/null
Run Code Online (Sandbox Code Playgroud)

在这种情况下,没有任何事情发生,但cron真的跑了.

如果我/usr/bin/php /path/to/cron.php从命令行调用this(),一切都按预期工作.

我犯了什么错误的想法?

感谢您的帮助!

Rob*_*her 5

您可能需要在'somefile.php'上使用绝对路径.它可能是在cron的pwd中创建的.或者你可以在cron语句的脚本开头做一个chdir.