通过 php 运行 npm install 脚本

Gur*_*bot 5 php bash shell

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

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

我尝试了以下方法:

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

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

有任何想法吗?

Gur*_*bot 6

有两个问题需要处理:

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

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

在同事的帮助下,我找到了正确的权限设置。我打电话exec("whoami")查看 PHP 正在使用该apache用户,然后通过 SSH 连接到 vagrant 并执行以下操作:

cd /var
sudo chown apache:apache www
Run Code Online (Sandbox Code Playgroud)

然后我可以通过运行来确保我的用户被授予权限

ls -l
Run Code Online (Sandbox Code Playgroud)

结果摘录如下。可以看到该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
Run Code Online (Sandbox Code Playgroud)

这是我现在能够通过 PHP 成功运行的内容:

exec("HOME='".$_SERVER['DOCUMENT_ROOT']."' && cd ./../tmp && npm install", $output, $status);

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


小智 0

您必须确保npm将其添加到您的系统路径中。您可以通过打开在 Windows 上执行此操作

此电脑->系统属性->高级系统设置->转到选项卡高级设置->环境变量,然后编辑PATH

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