簡體   English   中英

如果我通過cron運行php腳本時使用相對路徑或絕對路徑是否重要?

[英]Does it matter if I use relative or absolute path's when running a php script via cron?

我目前正在編寫一個腳本,我試圖通過cron自動化。 通過終端運行腳本很好,但是當我嘗試使用crontab運行腳本時,我遇到了一些問題。

我的腳本的一部分加載和驗證和xml文件通過DOMDocument :: loadXML()DOMDocument :: validate()和php在嘗試驗證聲明時引發錯誤:

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

在xml文件中,dtd設置為:

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

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

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

引用PHP文檔以了解CLI使用的差異 (命令行界面):

在CLI SAPI 不會將當前目錄切換到執行腳本的目錄!

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM