2011-02-07 38 views
0

我目前正在試圖通過cron嘗試自動化的腳本。通過終端運行腳本很好,但是當我嘗試用crontab運行腳本時,我遇到了一些問題。通過DOMDocument::loadXML()DOMDocument::validate()和PHP我的腳本加載和驗證和xml文件的當通過cron運行php腳本時,如果使用相對路徑或絕對路徑,這有什麼關係嗎?

部分拋出試圖驗證,說明當一個錯誤:

Failed to load external entity: /linuxuser/homefolder/my_dtd.dtd 

在XML文件中,DTD被設置爲:

../../../../../../../my_dtd.dtd 

服務器是否存在一些錯誤配置,或者在我的php代碼中更可能出現錯誤?它似乎抓住我的Linux主目錄而不是相對於xml文件的路徑。只是想知道是否有其他人看到過這樣的問題,或者可以指出我正確的方向。謝謝。

+0

當然,它不會。路徑應該是*正確的*,不管它是相對的還是絕對的。 – 2011-02-07 16:28:30

回答

1

引述PHP文檔differences in CLI usage(命令行界面):

的CLI SAPI不會變化 當前目錄下的 的執行腳本的目錄!

當PHP腳本通過CRON運行時,它將在用戶的主目錄上執行。您可以將腳本使用的所有相對路徑引用替換爲絕對路徑,也可以將其放在腳本的開頭:

chdir(dirname(__FILE__)); # for PHP 5.2.x and below 
# or 
chdir(__DIR__); # for PHP 5.3+ 
+0

這正是問題所在。非常感謝! – rabidocyte 2011-02-08 01:25:37

0

在您的xml文件中嘗試絕對路徑。

1

很可能,問題在於工作目錄和解決相對路徑。