php 系统('npm install')不工作
php system('npm install') not working
我想在使用 PHP 的目录中安装 npm。
我使用这个命令来安装 npm:
system('npm install', $output);
然后我得到以下响应:127
这意味着,如果我正确查找,则找不到 npm 命令。我也试过 npm -v
,这也给出了 127 响应。
我的 PHP 与我在终端中使用的用户相同 运行ning。当我在我的终端中 运行 npm install
或 npm -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 那个目录。
我想在使用 PHP 的目录中安装 npm。 我使用这个命令来安装 npm:
system('npm install', $output);
然后我得到以下响应:127
这意味着,如果我正确查找,则找不到 npm 命令。我也试过 npm -v
,这也给出了 127 响应。
我的 PHP 与我在终端中使用的用户相同 运行ning。当我在我的终端中 运行 npm install
或 npm -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
.
我想通了。仍然不确定为什么我必须将它添加到 PHP 中的命令中,但这对我有用:
export PATH=$PATH:/usr/local/bin/npm; npm install
当然,简单的解释是 NPM 现在在我的 PATH
变量中,但是 echo $PATH
已经 return 那个目录。