[英]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.