Php apache_get_modules()的替代方法,以获取已加载apache模块的列表

Php apache_get_modules()的替代方法,以获取已加载apache模块的列表,php,apache,Php,Apache,我试图使用php通过apache\u get\u modules()获取已加载apache模块的列表,但我得到一个错误,即该函数未定义 从搜索结果来看,问题似乎是 这仅在安装PHP时有效 作为Apache模块。这不会 将PHP用作CGI时的函数(例如: SUPPP) 我不确定是否是这样,但我使用共享主机。有没有关于如何找到已加载apache模块列表的想法,最好是使用php,但我愿意接受建议 phpinfo()将告诉您如何安装PHP,特别是服务器API行 您可以解析Apache的配置文件,找出配

我试图使用php通过
apache\u get\u modules()
获取已加载apache模块的列表,但我得到一个错误,即该函数未定义

从搜索结果来看,问题似乎是

这仅在安装PHP时有效 作为Apache模块。这不会 将PHP用作CGI时的函数(例如: SUPPP)

我不确定是否是这样,但我使用共享主机。有没有关于如何找到已加载apache模块列表的想法,最好是使用php,但我愿意接受建议

  • phpinfo()将告诉您如何安装PHP,特别是服务器API行
  • 您可以解析Apache的配置文件,找出配置了哪些模块
  • 您可以运行类似于
    apache2-t-D DUMP_MODULES
    的程序来获取模块列表

只有当PHP作为模块而不是CGI安装时,apache_get_modules()才可用。这就是您无法使用此功能并遭受错误的原因。另一个原因是php.ini中的disable_functions指令。在使用CGI服务器API时,您可以使用以下编写的php代码检查是否启用了重写模块

<?php
if (is_mod_rewrite_enabled()) {
  print "The apache module mod_rewrite is enabled.<br/>\n";
} else {
  print "The apache module mod_rewrite is NOT enabled.<br/>\n";
}

/**
 * Verifies if the mod_rewrite module is enabled
 *
 * @return boolean True if the module is enabled.
 */
function is_mod_rewrite_enabled() {
  if ($_SERVER['HTTP_MOD_REWRITE'] == 'On') {
    return TRUE;
  } else {
    return FALSE;
  }
}
?>

要检查您是否在CGI或Apache下运行Php,可以使用下面的过程

创建check_phpinfo.php文件并编写下面编写的php代码-

<?php

// Show all information, defaults to INFO_ALL
phpinfo();

?>

然后保存文件并导航到Url-like,它将在服务器中显示php文件


在四行中,您可以看到“服务器API CGI/FastCGI”,这表示您正在CGI/Fast CGI

下使用PHP,选中了phpinfo,结果证明它是作为CGI安装的。您是否介意就如何使最后2点中的一点起作用给出更多细节。我在共享主机上,所以没有根访问权限。@devling你有关于这个错误的任何说法吗?我也有同样的问题error@devling我解决了这个错误,并添加了帮助我解决这个问题的信息。你可以查看我的回答欢迎使用StackOverflow!请试着为你的答案提供一些上下文。这允许用户从您的答案中学习,以及如何将其应用到其他地方,而不仅仅是在这个场景中。你可以在这里找到关于如何写答案的更多建议:@delving我试图在我的答案中添加一些信息,这些信息可能会对你和其他人有所帮助
<?php

// Show all information, defaults to INFO_ALL
phpinfo();

?>