php系统(' npm install')无效

时间:2017-10-10 11:47:11

标签: php npm exec system shell-exec

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

system('npm install', $output);

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

任何想法可能是什么问题? NPM安装在/usr/local/bin/中,该$PATH包含在我的ValueError: time data '200101030' does not match format '%Y%m%d%H%M%S' (match) 变量中。

2 个答案:

答案 0 :(得分:1)

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

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将执行级别恢复为“强制执行”。

答案 1 :(得分:1)

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

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

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