我正在尝试从php脚本在本地项目中执行grunt。
我有全球安装的npm和grunt cli。
如果我打开终端并输入:
cd /path/to/local/grunt/project/ && grunt
Grunt将成功运行并执行我在该目录中找到的gruntfile.js中设置的任务。
然而,当我尝试通过php脚本执行相同的操作时
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 :(得分:4)
你需要使用node和grunt的绝对路径,所以像这样执行你的命令
var_dump(shell_exec('cd /path/to/local/grunt/project/ && /usr/local/bin/node /usr/local/bin/grunt 2>&1'));