我偶然发现了一个非常奇怪的问题,我真诚地希望你能向我解释原因。
免责声明:我知道这是个坏主意,这不是真实场景,只是我偶然发现的一个怪癖,我很想知道为什么会这样。
考虑这段代码:
$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/