PHP探针仅展示phpinfo()输出,真正读取配置的是phpinfo()函数;部分参数因php_admin_value等限制被隐藏,可用ini_get()精准获取运行时值。

PHP探针本身不“查看配置参数”,它只是把 phpinfo() 的输出用网页形式展示出来——真正读取和呈现 PHP 配置的,是 PHP 内置函数 phpinfo()。如果你发现探针页面没显示某些参数(比如 upload_max_filesize 或 disable_functions),不是探针有问题,而是 PHP 运行时权限或配置限制导致这些值被隐藏或未生效。
为什么有些配置在探针里看不到?
PHP 从 5.5.0 开始,默认隐藏部分敏感配置项(如 display_errors、error_log、memory_limit 等)在 phpinfo() 输出中,前提是启用了 php_admin_flag 或 php_admin_value(常见于 Apache 的 httpd.conf 或 Nginx + PHP-FPM 的 www.conf 中)。这类设置会屏蔽用户态的 phpinfo() 显示,但实际仍生效。
- 检查是否被
php_admin_value强制覆盖:在 PHP-FPM 的www.conf中搜索php_admin_value[xxx] - 确认运行用户能否读取
php.ini:Web 进程用户(如www-data)可能无权访问某些路径下的 ini 文件 -
disable_functions若包含phpinfo,探针页面将直接报错或空白——此时需改用ini_get('xxx')单独查
不用探针,直接查某个配置项的值
比起打开整个 phpinfo() 页面,多数时候你只需要确认某几个关键参数。用 ini_get() 最快最准,且不受 php_admin_* 隐藏影响(它返回运行时实际值):
echo ini_get('upload_max_filesize'); // 输出类似 "2M"
echo ini_get('max_execution_time'); // 输出 "30"
var_dump(ini_get_all('date')); // 查看 date 相关所有配置
注意:ini_get() 只能查「可修改」的配置项;像 extension_dir 这类只读项会返回空字符串,得用 get_cfg_var('extension_dir')。
立即学习“PHP免费学习笔记(深入)”;
探针文件里怎么安全加自定义配置检查?
很多老式探针(如 phpinfo.php)只是简单调用 phpinfo(),没法过滤或高亮关键项。你可以手动在探针文件末尾追加一段检查逻辑:
$k: " . (ini_get($k) ?: get_cfg_var($k) ?: 'N/A') . "
"; } ?>
这样既避开 phpinfo() 被隐藏的风险,又避免暴露全部环境细节。别忘了删掉探针文件上线后的调试代码——它可能泄露服务器路径或扩展信息。
真正难的不是“怎么看到配置”,而是理解哪些配置由谁控制:php.ini、.htaccess、user_ini.filename、PHP-FPM pool 配置、甚至容器启动参数都可能覆盖同一项。看到值不对,先查 php --ini 和 php -r "print_r(ini_get_all());",再比对 Web 请求里的 ini_get() 结果,差值就是运行时被动态覆盖的部分。











