核心是切断所有PHP版本泄露路径:一、php.ini设expose_php=Off;二、Apache配置Header unset X-Powered-By;三、disable_functions禁用phpinfo并删除phpinfo.php等测试文件;四、关闭display_errors与html_errors,配静态错误页。

在 PHPStudy 环境中屏蔽 PHP 版本号泄露,核心是切断所有向外暴露 PHP 版本的输出路径。这不是单点设置,而是需从 PHP 配置、Web 服务器响应头、错误页面、调试文件四个层面同步处理。
关闭 expose_php(最基础一步)
PHPStudy 默认开启 expose_php = On,会在 HTTP 响应头中自动添加 X-Powered-By: PHP/x.x.x。必须禁用:
- 打开对应 PHP 版本的
php.ini文件(路径通常为:PHPSstudy\Extensions\php\php_x.x.x\php.ini) - 查找
expose_php行,改为:expose_php = Off - 保存后,在 PHPStudy 主界面点击对应 PHP 版本右侧的“重启”按钮,使配置生效
清除 Apache 的 X-Powered-By 响应头
即使 expose_php = Off,PHPStudy 内置的 Apache 模块仍可能残留该头。需强制移除:
- 进入 PHPStudy → “其他选项菜单” → “网站设置” → “Apache 配置” → 编辑
httpd.conf或对应虚拟主机配置 - 在
<VirtualHost>块内或全局配置末尾添加:Header unset X-Powered-By - 确认已启用
mod_headers模块(默认开启;若报错则检查httpd.conf中LoadModule headers_module modules/mod_headers.so是否未被注释) - 保存后点击 PHPStudy 中 Apache 的“重启”按钮
禁用 phpinfo() 并清理测试文件
phpinfo 页面是版本及环境信息的“全景快照”,生产环境绝对不可存在:
立即学习“PHP免费学习笔记(深入)”;
- 在
php.ini的disable_functions行末尾追加:phpinfo(如已有其他函数,用英文逗号分隔) - 用 PHPStudy 的“网站根目录”功能定位到
www目录,搜索并删除所有含phpinfo()的文件,常见命名包括:phpinfo.php、info.php、test.php、debug.php - 若需临时调试,务必改名(如
z9x8y7.php)并配合 IP 白名单访问控制,切勿使用可猜测的名称
关闭错误显示并统一错误页
开启 display_errors 时,PHP 错误堆栈可能间接泄露版本、路径甚至代码片段:
- 在同个
php.ini中设:display_errors = Off和html_errors = Off - 确保
error_log已启用(如error_log = "D:/phpstudy_pro/Logs/php_error.log"),便于排查但不对外暴露 - 在 Apache 虚拟主机配置中添加自定义错误页,例如:
ErrorDocument 500 /500.html,并确保该 HTML 文件为纯静态、不含任何 PHP 输出或版本痕迹



















