phpinfo() 会成为安全隐患是因为只要 Web 目录下存在调用它的 PHP 文件(如 info.php),攻击者即可直接访问并获取服务器完整的 PHP 配置、扩展列表、$_SERVER 环境变量等敏感信息,风险实时存在。

为什么 phpinfo() 会成为安全隐患
只要 Web 目录下存在调用 phpinfo() 的 PHP 文件(比如 info.php),攻击者就可能直接访问它,拿到服务器的完整 PHP 配置、扩展列表、$_SERVER 环境变量、已加载模块路径等敏感信息。这不是“临时”或“测试时才危险”,而是只要能被 HTTP 访问到,风险就实时存在。
最有效:从 Web 根目录彻底删除或重命名 phpinfo() 文件
所谓“临时关闭”,本质是阻止 HTTP 可达性。最可靠的方式不是改函数行为,而是让文件不可访问:
- 检查 Web 根目录(如
/var/www/html/或C:\xampp\htdocs\)下是否存在info.php、test.php、phpinfo.php等疑似文件 - 直接删除它们,或重命名为带
.bak/.disabled后缀(如info.php.disabled) - 确认 Web 服务器(Apache/Nginx)不支持通过后缀别名执行
.disabled文件(默认不支持,但需验证)
禁用 phpinfo() 函数本身(仅限无法删文件的受限环境)
如果因权限或流程限制无法删文件,可强制禁用该函数——但这属于兜底手段,不能替代删除操作:
- 编辑
php.ini,找到disable_functions行,追加phpinfo(注意不带括号) - 确保该配置在所有 SAPI 下生效(CLI、Apache、FPM 模块需分别确认)
- 重启 PHP-FPM 或 Web 服务器(
systemctl restart php-fpm或apachectl restart) - 验证是否生效:
php -r "phpinfo();"
应报错Call to undefined function phpinfo()
⚠️ 注意:disable_functions 对已编译进核心的函数(如 echo)无效,但对 phpinfo() 有效;不过某些旧版 PHP 或自定义 SAPI 可能绕过该限制。
立即学习“PHP免费学习笔记(深入)”;
用 Web 服务器规则拦截访问(Nginx/Apache 补充防护)
即使删了文件,也建议加一层访问控制,防遗漏或误传:
- Nginx:在 server 块中加入
location ~* ^/(info|phpinfo|test|debug)\.php$ { deny all; } - Apache:在
.htaccess或虚拟主机配置中加入Require denied - 这些规则匹配文件名关键词,不依赖内容,响应快且无需 PHP 解析
真正要停用 phpinfo() 输出,没有“快捷方式”可留后门——删文件是起点,禁函数和加规则是保险。最容易被忽略的是:开发环境导出的备份包(如 www-backup.zip)里常藏有 info.php,上线前务必解压扫描。











