php 系统('npm install')不工作

php system('npm install') not working

我想在使用 PHP 的目录中安装 npm。 我使用这个命令来安装 npm:

system('npm install', $output);

然后我得到以下响应:127 这意味着,如果我正确查找,则找不到 npm 命令。我也试过 npm -v,这也给出了 127 响应。 我的 PHP 与我在终端中使用的用户相同 运行ning。当我在我的终端中 运行 npm installnpm -v 时,它工作正常。

任何想法可能是什么问题? NPM 安装在 /usr/local/bin/ 中,它包含在我的 $PATH 变量中。

我最近自己通过控制台使用了系统命令。我发现

chdir('/usr/local/bin/');

一个很有用的改变目录的功能。请把它放在你的系统调用之前。

如果您使用的是旧版本PHP(低于5.4),您可以尝试关闭safe_mode。看到这个 link.

在命令中使用完整路径,如:

system('/usr/local/bin/npm install', $output);

然后请检查apache用户是否有权限查找(或获取)并执行该命令。我认为这是一个权限问题。

如果您使用的是 SELiunux,则可以使用 setenforce 0 将模式设置为 "Permissive"。如果它有效,您必须授予 apache 用户访问权限。不要忘记使用 setenforce 1.

将强制级别变回 "Enforcing"

我想通了。仍然不确定为什么我必须将它添加到 PHP 中的命令中,但这对我有用:

export PATH=$PATH:/usr/local/bin/npm; npm install

当然,简单的解释是 NPM 现在在我的 PATH 变量中,但是 echo $PATH 已经 return 那个目录。