2014-09-01 85 views
3

我想從php腳本執行本地項目中的grunt。如何從PHP腳本運行grunt?

我有npm和全球安裝的grunt cli。

如果我打開終端,輸入:

cd /path/to/local/grunt/project/ && grunt 

步兵成功運行,開展我在該目錄中的gruntfile.js設定的任務。

然而,當我嘗試通過PHP腳本殼EXEC同樣的事情

var_dump(shell_exec('cd /path/to/local/grunt/project/ && grunt 2>&1')); 

我得到:

sh: grunt: command not found 

我也試着全球CLI的直接路徑:

var_dump(shell_exec('/usr/local/lib/node_modules/grunt-cli/bin/grunt 2>&1')); 

但後來我得到:

env: node: No such file or directory 

然而,這從終端運行。

這是怎麼回事?爲什麼當我嘗試通過php運行它時沒有找到grunt命令?我如何從PHP腳本中調用exec或exec grunt?

+0

PATH變量是不是如由 – 2014-09-01 03:47:00

+0

加載,我可以運行其他人一樣一樣「/ usr/local/bin/optipng」在grunt的相同位置找到。有什麼建議麼? – user3143218 2014-09-01 04:01:05

+0

我認爲你有PATH問題。試試這篇文章:http://serverfault.com/questions/151328/setting-apache2-path-environment-variable – 2014-09-01 04:14:15

回答

4

您需要使用節點和繁重的絕對路徑,以便使用命令行的時候執行你的命令,這樣

var_dump(shell_exec('cd /path/to/local/grunt/project/ && /usr/local/bin/node /usr/local/bin/grunt 2>&1'));