Php apache_get_modules()的替代方法,以获取已加载apache模块的列表
我试图使用php通过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的配置文件,找出配
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();
?>