替代apache_get_modules()来获取加载的Apache模块列表

我试图使用PHP来获取使用apache_get_modules()加载的Apache模块的列表,但我得到一个错误,这个函数是未定义的。

从search看来,问题是这样的

这只适用于PHP作为Apache模块安装。 使用PHP作为CGI时,这不起作用(例如:suPHP)

我不确定是否是这种情况,但我在共享主机。 任何想法如何找出加载的Apache模块的列表,最好用PHP,但我打开的build议。

  • phpinfo()会告诉你如何安装PHP,尤其是server API行。
  • 你可以解析Apache的配置文件来找出哪些模块被配置。
  • 你可以运行类似apache2 -t -D DUMP_MODULES的模块列表。

apache_get_modules()仅在PHP作为模块安装而不是CGI时可用。 这就是为什么你不能使用这个功能,并从错误中受苦的原因。 另一个原因是由你的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; } } ?> 

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

创建一个check_phpinfo.php文件,写下面写的PHP代码 –

 <?php // Show all information, defaults to INFO_ALL phpinfo(); ?> 

然后该文件和导航到Url就像 – http://www.example.com/check_phpinfo.php它会显示你的PHP文件在服务&#x5668;

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

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