函数文档

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

Return

bool Whether the specified module is loaded.

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.