我想在文件夹中运行npm install
来安装一些节点模块等。
如何在PHP脚本中执行此操作? 我已经尝试了很多东西,很明显我对实际问题不清楚;)
我尝试了以下内容:
shell_exec("npm install");
(失败)
exec("npm install")
(失败,出现127错误,意味着找不到要运行的脚本我认为)
有什么想法吗?
答案 0 :(得分:1)
有两个问题要处理:
在我的流浪盒上安装节点。
确保PHP运行它的exec()命令的用户具有正确的权限。
在同事的帮助下,我能够找出正确的设置权限。我打电话给exec("whoami")
看到PHP正在使用apache
用户,然后通过SSH连接到vagrant并执行以下操作:
cd /var
sudo chown apache:apache www
然后我能够通过运行
确保我的用户被授予权限ls -l
结果摘录如下。您可以看到www
文件夹具有为apache
drwxr-xr-x. 8 root root 4096 Nov 30 2015 spool
drwxrwxrwt. 4 root root 4096 Oct 27 15:48 tmp
drwxr-xr-x. 5 apache apache 4096 Jul 18 11:24 www
drwxr-xr-x. 2 root root 4096 Sep 23 2011 yp
以下是我现在能够通过PHP成功运行的内容:
exec("HOME='".$_SERVER['DOCUMENT_ROOT']."' && cd ./../tmp && npm install", $output, $status);
希望这有助于将来。
答案 1 :(得分:0)
您必须确保npm
已添加到系统路径中。您可以通过openening在Windows上执行此操作
此电脑 - > 系统属性 - > 高级系统设置 - > 转到标签高级设置 - > 环境变量,然后修改PATH
我的安装位于C:\Program Files (x86)\nodejs\
下,所以我补充说。然后重新启动php应用程序(确保在更改PATH后重新打开进程/ IDE)并且应该这样做
答案 2 :(得分:0)
我建议你试试npm的整个路径。 它可以通过运行
在Unix系统上找到which npm
在终端窗口中。