应删除或重命名phpinfo.php等调试文件,通过Web服务器配置禁止访问,PHP代码中添加IP或密钥验证,robots.txt屏蔽爬虫,并清理CMS/框架自动生成的调试页。

如果您的 PHP 信息页面(phpinfo())被搜索引擎抓取并公开索引,攻击者可能利用其中暴露的服务器环境细节发起针对性攻击。以下是安全隐藏 phpinfo 页面的多种操作方法:
一、删除或重命名 phpinfo.php 文件
最直接有效的方式是移除该文件本身,避免任何访问路径存在。若需临时调试,应使用非公开命名且不包含常见关键词的文件名。
1、通过 FTP 或 SSH 登录网站根目录及子目录,搜索所有名为 phpinfo.php、info.php、test.php 的文件。
2、确认无业务依赖后,执行删除命令:rm -f phpinfo.php info.php test.php。
3、如需保留调试能力,将文件重命名为含随机字符串的名称,例如:a7x9k2_debug_env.php,并确保该名称未在代码中硬编码引用。
二、通过 Web 服务器配置禁止访问
利用 Apache 或 Nginx 的访问控制机制,在服务端层面拦截对 phpinfo 页面的 HTTP 请求,即使文件存在也无法被读取。
1、对于 Apache 环境,在站点根目录的 .htaccess 文件中添加以下规则:
2、对于 Nginx 环境,在 server 块内插入 location 匹配规则:
location ~* ^/(phpinfo|info|test)\.php$ { return 403; }
3、修改后重启对应服务:systemctl restart apache2 或 systemctl restart nginx。
三、在 PHP 代码中增加访问限制
通过逻辑判断控制 phpinfo() 函数仅在特定条件下执行,例如限定本地 IP 或需携带密钥参数,从应用层降低暴露风险。
1、打开原 phpinfo.php 文件,将裸调用 phpinfo(); 替换为条件判断结构。
2、添加白名单 IP 检查:if ($_SERVER['REMOTE_ADDR'] !== '127.0.0.1' && $_SERVER['REMOTE_ADDR'] !== '::1') { die('Access denied'); }
3、或启用密钥验证方式:if (!isset($_GET['key']) || $_GET['key'] !== 'Xy7mQp2') { die('Unauthorized'); },访问时需手动附加 ?key=Xy7mQp2。
四、使用 robots.txt 屏蔽爬虫抓取
虽不能阻止恶意直接请求,但可防止主流搜索引擎持续收录 phpinfo 页面,减少无意间暴露的可能性。
1、确认网站根目录下存在 robots.txt 文件;若无,则新建一个。
2、在文件开头添加禁止规则行:Disallow: /phpinfo.php、Disallow: /info.php、Disallow: /test.php。
3、保存后通过浏览器访问 https://yourdomain.com/robots.txt 验证内容是否生效,确保无语法错误。
五、检查并清理 CMS 或框架自动生成的调试页
部分 WordPress 插件、Laravel 开发模式、ThinkPHP 调试面板等可能在启用调试时动态输出 phpinfo 内容,需排查第三方组件行为。
1、登录 WordPress 后台,进入插件管理页,停用所有非必要插件,特别关注含 phpinfo、server info、debug 字样的插件。
2、检查 Laravel 项目中的 .env 文件,确认 APP_DEBUG=false 已设置,避免异常页泄露环境信息。
3、对 ThinkPHP 应用,查找 config/app.php 中的 show_error_msg 和 app_debug 参数,统一设为 false。











