2012-05-09 66 views
1

我有一個dreamhost web面板,我設置了一個cronjob來運行我的php腳本,但它顯示了奇怪的錯誤,它看起來像它沒有執行文件,但它是閱讀文件。如下所示的錯誤,它作爲電子郵件給我PHP文件運行良好但在Cron作業上表現出色意外

PHP:沒有這樣的文件或目錄[somesessionvariable] = 1573:命令 未找到行3:附近意外的標記 "include/mydb.php"' line 3: require_once語法錯誤(「包括/mydb.php「);

這是郵件的主題:

的Cron在/ usr/local/bin目錄/ setlock -n /tmp/cronlock.3782446772.128284 SH -C $'/路徑/到/文件/ cases_cron.php」

文件的權限是755,我已經複製從其他運行完美cronjobs的路徑,所以沒有問題,因爲它是獲得文件內容的文件路徑。我沒有得到問題的地方

+2

看起來像''require_once();''末尾有單引號。顯示代碼。 – MrCode

+2

我喜歡以'我有一個夢想'開頭的問題;)。關於這個問題:我們可能需要更多的細節。例如代碼,文件夾結構。 – kapa

+0

<?php require_once dirname(__ FILE __)。「/ include/mydb.php」; require_once dirname(__ FILE __)。「/ include/all_common.php」; //include('../preloadsClients.php'); if(!$ db)$ db = new DB(); $ qry =「SELECT * FROM WHERE Case_CaseId爲NULL的情況」; // echo $ qry; $ db-> query($ qry); if($ db-> rows()> 0) {和其他代碼,但關於目錄結構沒有問題,因爲我剛剛從工作腳本中複製了這些行,在cron上工作正常。但這是行不通的 –

回答

0

好吧,夥計們,感謝您的支持,我終於能理清問題。

我缺少的文件

#!/usr/local/bin/php

添加這行代碼的PHP文件的頂部的頂部以下行,整理我的問題。但我不知道這一行對劇本意味着什麼。但我從其他工作克隆複製它。

+0

該行是#!/ usr/local/bin/php –

+0

它告訴操作系統使用什麼解釋器。改爲在你的cron作業中使用'php -f <腳本文件名>'。如果通過cron或命令行(或通過Web服務器)運行,則會獲得相同的輸出, –

1

我應該嘗試使用包含文件的絕對路徑。

我敢肯定問題是關於包含路徑沒有在文件調用和cron調用中設置相同。

你可以做這樣的事情:

require_once dirname(__FILE__)."/include/mydb.php"; 

__FILE__將在執行此行的文件的路徑,dirname()返回該文件所在的絕對路徑。

當然,你可以使用,只要你想requirerequire_onceincludeinclude_one

+1

FYI [自5.3](http://php.net/manual/en/language.constants.predefined.php)'__DIR__'包含'dirname(__ FILE __)' – DaveRandom

+0

感謝您的回覆,但作爲我之前提到過,包括在其他cron文件中工作 –

+0

Thans @DaveRandom,我不知道它。 @King Khan,看起來問題是關於include的結尾處的'''。刪除它,它會工作。 –

0

你的路可能是關閉。嘗試避免使用相對路徑(include/file.php而不是/var/www/project/include/file.php),或者用chdir()來改變你的工作目錄。

0

你也可以把一個「CD」命令進入你的cronjob即:

cd /path/to/phpfile && php -f file.php 
+0

謝謝,但正如我上面提到的那樣,沒有路徑問題,因爲cron訪問文件並顯示文件內容中的錯誤 –