通过php运行npm install script


Run npm install script through php

我想在文件夹内运行npm install以安装一些节点模块等

如何在PHP脚本中做到这一点?我已经尝试了一堆东西,很明显,我不清楚实际问题;)

我试过以下方法:

shell_exec("npm install"); (Fails)

exec("npm install")(失败与127错误,这意味着它不能找到脚本运行我认为)

任何想法?

有两个问题需要处理:

  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);

我建议你尝试使用npm的整个路径。它可以在Unix系统上通过运行

找到。
which npm

必须确保将npm添加到系统路径中。在windows上可以通过打开

此pc -> 系统属性 -> 高级系统设置 -> 进入选项卡高级设置 -> 环境变量然后编辑PATH

我的安装是在C:'Program Files (x86)'nodejs'下找到的,所以我添加了它。然后重新启动php应用程序(确保在更改了PATH之后重新打开了进程/IDE),这样就可以完成