【问题标题】:Run npm install script through php通过 php 运行 npm install 脚本
【发布时间】:2017-03-10 13:28:16
【问题描述】:

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

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

我尝试了以下方法:

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

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

有什么想法吗?

【问题讨论】:

  • Welp 我必须在我的 vagrant 机器上实际安装节点,所以现在 exec 命令运行。但是,当 npm 尝试创建内容时,我仍然会遇到写权限问题。 Error: EACCES: permission denied, mkdir '/var/www/.npm'这是有人熟悉的吗?

标签: php bash shell


【解决方案1】:

有两个问题需要处理:

  1. 在我的 vagrant box 上安装 Node。

  2. 确保 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);

希望这对将来的某人有所帮助。

【讨论】:

    【解决方案2】:

    您必须确保将npm 添加到您的系统路径中。你可以在windows上通过打开来做到这一点

    这台电脑 -> 系统属性 -> 高级系统设置 -> 进入高级设置标签 -> 环境变量然后编辑PATH

    我的安装位于C:\Program Files (x86)\nodejs\ 下,所以我添加了它。然后重新启动 php 应用程序(确保在更改 PATH 后重新打开进程/IDE),这应该可以解决问题

    【讨论】:

    • 如果 npm 不在系统路径上,我在 CLI 中使用它不会有问题吗?
    【解决方案3】:

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

    which npm
    

    在终端窗口中。

    【讨论】:

      猜你喜欢
      • 2017-09-07
      • 2021-09-22
      • 2017-01-13
      • 2022-11-20
      • 2021-06-04
      • 2011-07-27
      • 2019-07-23
      • 1970-01-01
      相关资源
      最近更新 更多