一些設置背景第一:PHP的cronjob改變SH根
我有一個運行名爲worker_cronjob一個PHP文件,一個cronjob。所有的文件確實是從混帳下載我的工作人員和cron.d中的cronjob看起來像:
*/1 * * * *的Ubuntu /家庭/ Ubuntu的/ worker_cronjob >> /home/ubuntu/worker.log
它包括worker_despatcher文件
哪個觸發了與(ROOT是一個abolsute路徑到我的目錄)子過程:
$ PID = EXEC(sprintf的(「%S>%S 2> 「/ worker/encoder.php」。$ arg_string,ROOT。「/ worker/encoder.log」));回到頂端這篇文章中的信息適用於:
問題是,在cronjob下,此方法正在改變系統命令的運行方式,更具體地說是sh。所以,當我運行如下命令:
ffmpeg
它返回:
sh: 1: ffmpeg: command not found
試錯後,我發現這只是從的cronjob發生,在某種程度上它改變目錄的設置方式,多像chroot沒有我叫chroot。
我看了其他線程,它說它創建cronjobs和運行文件時使用完整路徑,但它不是我的文件,這是問題,他們都通過絕對路徑引用,它運行已安裝的程序,我遇到問題。
絕對路徑是否也適用於已安裝的應用程序,或者是否有辦法打破此功能,讓我恢復只用一個字運行命令的功能?
的使用也絕對路徑ffmpeg的命令,並看看會發生什麼 –
創建被稱爲在的cronjob線bash腳本。因此,您可以更輕鬆地配置如何調用ffmpeg,並且可以模擬當root或其他某個用戶在其他shell中調用不同環境和所有內容時發生的情況。 – hakre
事實上,似乎我必須這樣做,因爲在我的PHP腳本中使用絕對路徑來調用它只是令人討厭。但是,是使用絕對路徑工作,個人非常奇怪的行爲,在我看來,感謝您的幫助:) – Sammaye