可通过四种方法实现phpinfo()局部显示:一、输出缓冲+HTML过滤;二、自定义数组模拟精简版;三、使用参数掩码(如phpinfo(8));四、Web服务器层IP访问控制。

如果您希望在调用 phpinfo() 时仅展示特定模块或配置项,而非默认的全部信息,则可以通过修改输出内容或拦截执行流来实现局部显示。以下是几种可行的技术路径:
一、使用输出控制函数截取并过滤 phpinfo() 输出
该方法利用 PHP 的输出缓冲机制捕获 phpinfo() 原始 HTML 输出,再通过字符串处理或 DOM 解析剔除不需要的模块区块,仅保留目标部分。
1、调用 ob_start() 开启输出缓冲。
2、执行 phpinfo() 函数,其 HTML 输出将被暂存于缓冲区而非直接发送至浏览器。
立即学习“PHP免费学习笔记(深入)”;
3、调用 ob_get_contents() 获取缓冲区内容,并赋值给变量。
4、使用 preg_match_all() 或 DOMDocument 加载 HTML 并定位包含mysql、gd、openssl等关键词的 table 或 h2 区块。
5、拼接匹配到的区块 HTML 片段,输出至页面。
6、调用 ob_end_clean() 清除并关闭缓冲区,防止重复输出。
二、通过自定义配置数组模拟精简版 phpinfo()
该方法不调用原生 phpinfo(),而是读取 php_ini_loaded_file() 获取当前配置文件路径,结合 extension_loaded()、function_exists() 等函数动态构建仅含所需模块的状态表。
1、定义目标模块列表,例如 array('gd', 'curl', 'mbstring', 'json')。
2、遍历该列表,对每个模块名调用 extension_loaded() 判断是否启用。
3、对启用的模块,使用 phpversion() 获取版本号,使用 get_defined_constants(true) 提取对应常量前缀(如 GD_VERSION)。
4、构造 HTML 表格行,每行包含模块名、状态、版本、编译选项(若可获取)。
5、将所有行拼接后输出,包裹在











