php - Symfony 进程 npm 安装。在 CLI 中工作不适用于 HTTP

标签 php node.js symfony npm command-line-interface

我偶然发现了一个非常奇怪的问题,我真诚地希望你能向我解释原因。

免责声明:我知道这是个坏主意,这不是真实场景,只是我偶然发现的一个怪癖,我很想知道为什么会这样。

考虑这段代码:

$process = new \Symfony\Component\Process\Process('node -v');
$process->mustRun();
echo $process->getOutput();

$process = new \Symfony\Component\Process\Process('npm install');
$process->mustRun();
echo $process->getOutput();

如果我按以下方式运行这段代码:php filename.php 它会按预期工作。 如果我将这段代码作为 HTTP 请求的一部分运行(由 nginx 提供服务),第一个命令会按预期返回 Node 版本,而第二个命令会引发异常:

(1/1) ProcessFailedException
The command "npm install" failed.

Exit Code: 127(Command not found)

Working directory: /Users/mrx/Documents/www/myCoolProject/

Output:
================


Error Output:
================
env: node: No such file or directory

yarn 也会发生同样的事情。

如果检测到 CLI,似乎 NODE 会为 NPM 设置一些设置,但我似乎找不到这方面的任何文献。 我知道这有点牵强而且不完全是一个 PHP 相关的问题,但我真的很想知道解释。

常见问题解答:

  • NPM/YARN 已正确安装并按预期工作
  • 以上代码在 php 的 CLI 中按预期工作

最佳答案

Exit 127 看起来像是内存不足的问题,npm 安装会消耗大量 RAM,并且可能超出了您的 Nginx 或 Apache PHP 进程限制。

关于php - Symfony 进程 npm 安装。在 CLI 中工作不适用于 HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51957922/

相关文章:

php - 如何在CodeIgniter中为403禁止的错误设置自定义页面

javascript - 显示 session 变量而不刷新页面

php - 使用 curl 的 gmail 未读电子邮件计数

php - 如何在 php/mysql web 应用程序中实现悲观锁定?

javascript - 如何获取在 Discord.js 中发消息的用户的角色?

node.js - 在 Nodejs 的 azure github 操作中使用工件

php - Symfony-在null上调用成员函数setFunction()

javascript - 不要读取node.js中的JSON对象

php - 我需要在主类之前先在 symfony2 中创建接口(interface)吗

php - 如何在 Symfony2 中使用查询字符串路由 URL?