通过php运行npm安装脚本

时间:2016-10-27 18:30:02

标签: php bash shell

我想在文件夹中运行npm install来安装一些节点模块等。

如何在PHP脚本中执行此操作? 我已经尝试了很多东西,很明显我对实际问题不清楚;)

我尝试了以下内容:

shell_exec("npm install");(失败)

exec("npm install")(失败,出现127错误,意味着找不到要运行的脚本我认为)

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

有两个问题要处理:

  1. 在我的流浪盒上安装节点。

  2. 确保PHP运行它的exec()命令的用户具有正确的权限。

  3. 在同事的帮助下,我能够找出正确的设置权限。我打电话给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
在终端窗口中