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

时间:2010-07-05 08:52:04

标签: php apache

我正在尝试使用php来获取使用apache_get_modules()加载的apache模块的列表,但是我得到一个错误,即此函数未定义。

从搜索来看似乎问题是

  

这只适用于安装PHP的情况   作为Apache模块。这不会   使用PHP作为CGI时的函数(例如:   suPHP)

我不确定是否是这种情况,但我正在共享托管。任何想法如何找出加载的apache模块列表,最好用PHP,但我愿意接受建议。

3 个答案:

答案 0 :(得分:7)

  • phpinfo()将告诉您如何安装PHP,尤其是服务器API行。
  • 您可以解析Apache的配置文件,以找出配置的模块。
  • 您可以运行类似apache2 -t -D DUMP_MODULES的内容来获取模块列表。

答案 1 :(得分:1)

apache_get_modules()仅在PHP作为模块而不是CGI安装时可用。这就是为什么你不能使用这个功能并遭受错误的原因。另一个原因是由php.ini中的disable_functions指令引起的。您可以使用以下编写的PHP代码来检查在使用CGI服务器API时是否启用了重写模块

<?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,如www.example.com/check_phpinfo.php,它会在服务器中显示php文件

在第四行中,您可以看到“服务器API CGI / FastCGI ”表示您在CGI / Fast CGI下使用PHP

答案 2 :(得分:-5)

<?php
// Print Apache Modules
print_r(apache_get_modules());
?>