我的Cronjobs问题是什么?
我不知道发生了什么事。但我有一个看起来像这样的脚本。 cron作业拒绝运行:我的Cronjobs问题是什么?
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有一个问题在他的工作类?
谢谢你的时间。
亲切的问候,
马吕斯
似乎在cron是运行它的工作
$_SERVER['DOCUMENT_ROOT']
是空的。
这是为什么?
从命令行调用脚本时不存在$_SERVER["DOCUMENT_ROOT"]
。
该变量(以及许多其他像REQUEST_URI
,SCRIPT_NAME
,HTTP_HOST
....)由Apache设置,它不在您的情况下运行。
您需要手动设置根目录。
要确定您是在网站的上下文中还是从命令行运行,请使用php_sapi_name()。
在命令行运行时,您可以手动设置$_SERVER["DOCUMENT_ROOT"]
,但我宁愿使用全新的常量或变量来放置路径。
更确切地说,命令行中没有DOCUMENT_ROOT。 – 2010-04-27 16:34:12
传说!谢谢!M – Marius 2010-04-27 16:35:10
@Álvaro你是对的,我编辑过的文字使得文字更清晰。 @Marius,不客气。 – 2010-04-27 16:36:04
执行以下操作(运行在命令行脚本),并检查输出是否正确:
print("$_SERVER[DOCUMENT_ROOT]/class_lib/DbFuctioneer.php");
最有可能的断裂。
是否有命令行PHP有权访问$ _SERVER超全局并且它是否设置为您期望的值? – dnagirl 2010-04-27 16:11:01
难道你的启动脚本(.bashrc或其他)不会设置这些值吗? – MJB 2010-04-27 16:19:26