2015-12-20 94 views
0

我使用cron來定期運行PHP腳本:運行cron作業裏面的exec()函數找不到命令

*/5 * * * * php /path/to/my/script.php 

裏面的PHP腳本我有一個運行的exec命令節點:

$command_str = 'node my_node_script.js'; 
exec($command_str, $output_arr, $error_res); 

一切工作在命令行很好,但不是通過cron。所以,我記錄的輸出,並且我收到以下錯誤:

sh: node: command not found 

這究竟是爲什麼,以及如何解決呢?

+2

查看[「通過cron運行腳本時找不到命令」](http://askubuntu.com/questions/47800/command-not-found-when-running-a-script-via-cron ) - 我會將其標記爲一個複製品,但它位於不同的網站上。 –

回答

0

爲避免與其他軟件包發生衝突,Debian dev團隊決定使用/usr/bin/nodejs作爲node.js的路徑。如果你正在使用Ubuntu或Debian的,你應該安裝節點遺留包使用的NodeJS命令node打電話:

sudo apt-get install nodejs-legacy 

對於現代版本的NodeJS,你應該叫nodejs命令來代替或您的的NodeJS的完整路徑安裝:

/usr/bin/nodejs my_script.js 
or 
/home/user/.nvm/vx.xx.xx/bin/node my_script.js 
+1

謝謝。使用絕對路徑確實解決了這個問題。 –

0

我由John C.

我所做的就是利用which node在命令行中找到o哪些想通了這一點感謝評論UT裏節點安裝(在我的情況下,它是usr/local/bin/node),然後更新的exec()調用來使用這個絕對路徑:

$command_str = '/usr/local/bin/node my_node_script.js'; 
exec($command_str, $output_arr, $error_res); 

我希望,如果你遇到這樣的挑戰,它幫助。