我想使用PHP在目录中安装npm。 我使用此命令安装npm:
system('npm install', $output);
然后我得到以下回复:127
这意味着,如果我正确查找,则找不到npm命令。我也试过npm -v
,这也给了127回复。
我的PHP运行在我在终端上使用的同一用户上。当我在终端中运行npm install
或npm -v
时,它正常运行。
任何想法可能是什么问题?
NPM安装在/usr/local/bin/
中,该$PATH
包含在我的ValueError: time data '200101030' does not match format '%Y%m%d%H%M%S' (match)
变量中。
答案 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
已经返回该目录。