我的Cronjobs问题是什么?

时间:2010-04-27 16:05:52

标签: php cron

我不知道最近发生了什么。但我有一个看起来像这样的脚本。 Cron的工作拒绝运行它:

include_once 'class_lib/mime_mail/mimeDecode.php';
include_once 'class_lib/Mail/IMAPv2.php';
include_once 'inc-functions.php';
include_once "$_SERVER[DOCUMENT_ROOT]/class_lib/DbFuctioneer.php";

$dbFuctioneer = new DbFuctioneer();

删除时,一切正常:

$dbFuctioneer = new DbFuctioneer();

即使DbFuctioneer()看起来像这样:

<?php

class DbFuctioneer { 
    function dbCountMatches( $count) {
        return $count;
    }
}

Cron的工作中是否存在类的问题?

感谢您的时间。

亲切的问候,
的Marius


似乎

$_SERVER['DOCUMENT_ROOT']
当cron正在运行它时,

为空。

为什么?

2 个答案:

答案 0 :(得分:3)

从命令行调用脚本时,没有$_SERVER["DOCUMENT_ROOT"]

该变量(以及许多其他变量,如REQUEST_URISCRIPT_NAMEHTTP_HOST ....)由Apache设置,在您的情况下不会运行。

您需要手动设置根目录。

要了解您是在网站的上下文中运行还是从命令行运行,请使用php_sapi_name()

您可以在命令行上运行时手动设置$_SERVER["DOCUMENT_ROOT"],但我宁愿使用全新的常量或变量来放置路径。

答案 1 :(得分:1)

执行以下操作(从命令行运行脚本)并检查输出是否正确:

print("$_SERVER[DOCUMENT_ROOT]/class_lib/DbFuctioneer.php");

很可能是它破了。