关于cron:来自cronjob的PHP ob_ *吗?

PHP ob_* from cronjob?

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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)));
?>

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

1
* * * * * /usr/bin/php /path/to/cron.php > /dev/null

在这种情况下,除了cron真正运行以外,什么都没有发生。

如果我从命令行调用此(/usr/bin/php /path/to/cron.php),则一切正常。

有什么想法我犯错了吗?

感谢您的预先帮助!


您可能需要在" somefile.php"上使用绝对路径。它可能是在cron的pwd中创建的。或者,您可以在cron语句的脚本开头处执行chdir。