apache_mod_loaded()
云策文档标注
概述
apache_mod_loaded() 函数用于检查指定模块是否在 Apache 配置中加载,适用于 WordPress 开发中服务器环境检测。
关键要点
- 函数接受两个参数:必需参数 $modstring 指定模块名称(如 mod_rewrite),可选参数 $default_value 设置未找到模块时的默认返回值(默认为 false)。
- 返回布尔值,表示指定模块是否已加载。
- 函数首先检查全局变量 $is_apache 以确认服务器是否为 Apache,若非 Apache 则直接返回 false。
- 优先使用 apache_get_modules() 函数获取已加载模块列表进行检测,若不可用则通过 phpinfo() 输出解析。
- 函数在 WordPress 2.5.0 版本中引入,相关函数包括 got_mod_rewrite() 用于检测 mod_rewrite 模块。
代码示例
function apache_mod_loaded( $mod, $default_value = false ) {
global $is_apache;
if ( ! $is_apache ) {
return false;
}
$loaded_mods = array();
if ( function_exists( 'apache_get_modules' ) ) {
$loaded_mods = apache_get_modules();
if ( in_array( $mod, $loaded_mods, true ) ) {
return true;
}
}
if ( empty( $loaded_mods )
&& function_exists( 'phpinfo' )
&& ! str_contains( ini_get( 'disable_functions' ), 'phpinfo' )
) {
ob_start();
phpinfo( INFO_MODULES );
$phpinfo = ob_get_clean();
if ( str_contains( $phpinfo, $mod ) ) {
return true;
}
}
return $default_value;
}
原文内容
Determines whether the specified module exist in the Apache config.
Parameters
$modstringrequired-
The module, e.g. mod_rewrite.
$default_valuebooloptional-
The default return value if the module is not found.
Default:
false
Source
function apache_mod_loaded( $mod, $default_value = false ) {
global $is_apache;
if ( ! $is_apache ) {
return false;
}
$loaded_mods = array();
if ( function_exists( 'apache_get_modules' ) ) {
$loaded_mods = apache_get_modules();
if ( in_array( $mod, $loaded_mods, true ) ) {
return true;
}
}
if ( empty( $loaded_mods )
&& function_exists( 'phpinfo' )
&& ! str_contains( ini_get( 'disable_functions' ), 'phpinfo' )
) {
ob_start();
phpinfo( INFO_MODULES );
$phpinfo = ob_get_clean();
if ( str_contains( $phpinfo, $mod ) ) {
return true;
}
}
return $default_value;
}
Changelog
| Version | Description |
|---|---|
| 2.5.0 | Introduced. |