Symfony Process npm install.在 CLI 中工作不适用于 HTTP



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

免责声明:我知道这是一个坏主意,这不是现实生活中的场景,而只是我偶然发现的一个怪癖,我很想知道为什么会发生这种情况。

考虑这段代码:

$process = new SymfonyComponentProcessProcess('node -v');
$process->mustRun();
echo $process->getOutput();
$process = new SymfonyComponentProcessProcess('npm install');
$process->mustRun();
echo $process->getOutput();

如果我以:php 文件名运行这段代码.php它会按预期工作。 如果我将这段代码作为HTTP请求的一部分运行(由nginx提供(,第一个命令按预期返回节点版本,而第二个命令引发异常:

(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

同样的事情也发生在纱线上。

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

常见问题:

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

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

最新更新