我不知道最近发生了什么。但我有一个看起来像这样的脚本。 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正在运行它时,为空。
为什么?
答案 0 :(得分:3)
从命令行调用脚本时,没有$_SERVER["DOCUMENT_ROOT"]
。
该变量(以及许多其他变量,如REQUEST_URI
,SCRIPT_NAME
,HTTP_HOST
....)由Apache设置,在您的情况下不会运行。
您需要手动设置根目录。
要了解您是在网站的上下文中运行还是从命令行运行,请使用php_sapi_name()。
您可以在命令行上运行时手动设置$_SERVER["DOCUMENT_ROOT"]
,但我宁愿使用全新的常量或变量来放置路径。
答案 1 :(得分:1)
执行以下操作(从命令行运行脚本)并检查输出是否正确:
print("$_SERVER[DOCUMENT_ROOT]/class_lib/DbFuctioneer.php");
很可能是它破了。