我想在文件夹中运行npm install
来安装一些节点模块等。
如何在 PHP 脚本中执行此操作? 我已经尝试了很多东西,很明显我不清楚实际问题;)
我尝试过以下方法:
shell_exec("npm install");
(失败)
exec("npm install")
(失败并出现 127 错误,这意味着我认为它找不到要运行的脚本)
有什么想法吗?
最佳答案
有两个问题需要处理:
在我的 vagrant box 上安装 Node。
确保 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);
希望这对将来的人有帮助。
关于php - 通过 php 运行 npm install 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40291782/