php系统(';npm安装';)不工作

php系统(';npm安装';)不工作,php,npm,exec,system,shell-exec,Php,Npm,Exec,System,Shell Exec,我想使用PHP在目录中安装npm。 我使用此命令安装npm: system('npm install', $output); 然后我得到了以下回答:127 这意味着,如果我查对了,就找不到npm命令。我还尝试了npm-v,这也给出了127个响应。 我的PHP在终端中使用的同一用户上运行。当我在终端中运行npm install或npm-v时,它工作正常 你知道有什么问题吗? NPM安装在我的$PATH变量中的/usr/local/bin/中。我最近通过控制台使用了系统命令。我发现 chdir('

我想使用PHP在目录中安装npm。 我使用此命令安装npm:

system('npm install', $output);
然后我得到了以下回答:127 这意味着,如果我查对了,就找不到npm命令。我还尝试了
npm-v
,这也给出了127个响应。 我的PHP在终端中使用的同一用户上运行。当我在终端中运行
npm install
npm-v
时,它工作正常

你知道有什么问题吗?
NPM安装在我的
$PATH
变量中的
/usr/local/bin/
中。

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

chdir('/usr/local/bin/');
更改目录的有用函数。请把这个放在系统调用之前

如果您使用的是旧版本的PHP(低于5.4),您可以尝试将safe_模式关闭。看这个

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

system('/usr/local/bin/npm install', $output);
然后请检查apache用户是否具有查找(或访问)和执行该命令的权限。我认为这是一个许可问题


如果您使用的是SELiunux,则可以使用
setEnforce0
将模式设置为“允许”。如果成功,您必须授予apache用户访问权限。不要忘了使用
setEnforce1

将强制级别恢复为“强制”,我最近通过控制台使用了系统命令。我发现

chdir('/usr/local/bin/');
更改目录的有用函数。请把这个放在系统调用之前

如果您使用的是旧版本的PHP(低于5.4),您可以尝试将safe_模式关闭。看这个

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

system('/usr/local/bin/npm install', $output);
然后请检查apache用户是否具有查找(或访问)和执行该命令的权限。我认为这是一个许可问题


如果您使用的是SELiunux,则可以使用
setEnforce0
将模式设置为“允许”。如果成功,您必须授予apache用户访问权限。不要忘了使用
setEnforce1

将强制级别恢复为“强制”我解决了问题。仍然不确定为什么我必须在PHP中将其添加到我的命令中,但这对我很有效:

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

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

我解决了这个问题。仍然不确定为什么我必须在PHP中将其添加到我的命令中,但这对我很有效:

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

当然,简单的解释是NPM现在在我的
PATH
变量中,但是
echo$PATH
已经返回了该目录。

是127
system()的返回值还是变量
$output
的内容?是127
system()的返回值
或变量的内容
$output
?也尝试了,但没有任何更改luck@SheperdOfFire我补充了一些想法。@Phillip谢谢你的时间。最后我自己解决了这个问题。仍然不知道为什么它会起作用,但我已经发布了我的答案。我也试过了,没有任何问题luck@SheperdOfFire我补充了一些想法。@Phillip谢谢你的时间。最后我自己解决了这个问题。仍然不知道为什么它会起作用,但我已经发布了我的答案。