2010-04-27 39 views
0

我不知道發生了什麼事。但我有一個看起來像這樣的腳本。 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'] 

是空的。

這是爲什麼?

+1

是否有命令行PHP有權訪問$ _SERVER超全局並且它是否設置爲您期望的值? – dnagirl 2010-04-27 16:11:01

+0

難道你的啓動腳本(.bashrc或其他)不會設置這些值嗎? – MJB 2010-04-27 16:19:26

回答

3

從命令行調用腳本時不存在$_SERVER["DOCUMENT_ROOT"]

該變量(以及許多其他像REQUEST_URISCRIPT_NAME,HTTP_HOST ....)由Apache設置,它不在您的情況下運行。

您需要手動設置根目錄。

要確定您是在網站的上下文中還是從命令行運行,請使用php_sapi_name()

在命令行運行時,您可以手動設置$_SERVER["DOCUMENT_ROOT"],但我寧願使用全新的常量或變量來放置路徑。

+0

更確切地說,命令行中沒有DOCUMENT_ROOT。 – 2010-04-27 16:34:12

+0

傳說!謝謝!M – Marius 2010-04-27 16:35:10

+0

@Álvaro你是對的,我編輯過的文字使得文字更清晰。 @Marius,不客氣。 – 2010-04-27 16:36:04

1

執行以下操作(運行在命令行腳本),並檢查輸出是否正確:

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

最有可能的斷裂。