关闭expose_php = Off是隐藏PHP 8.6版本信息的第一步,还需清除Web服务器残留头、关闭错误显示、移除代码中硬编码版本及phpinfo()输出,并用curl -I验证响应头。

PHP 8.6 中隐藏版本信息,核心仍是关闭 expose_php,但需注意它只是第一步——仅关掉这一项,不代表版本信息就彻底消失了。
改 php.ini 中的 expose_php = Off
这是最基础且必须的操作:
- 找到 PHP 8.6 对应的
php.ini文件,常见路径如:/etc/php/8.6/apache2/php.ini(Apache)或/etc/php/8.6/fpm/php.ini(PHP-FPM) - 搜索
expose_php,将原本的On改为Off:expose_php = Off - 保存后,重启对应服务:
• Apache:运行sudo systemctl reload apache2
• PHP-FPM:运行sudo systemctl reload php8.6-fpm
清除 Web 服务器残留的 X-Powered-By 头
即使 expose_php = Off,Apache 或 Nginx 仍可能因配置、模块或反向代理链路重新加上该头。
-
Apache:确保启用了
mod_headers(用a2enmod headers),然后在虚拟主机或.htaccess中添加:Header unset X-Powered-By -
Nginx:在
server或location ~ \.php$块中加入:fastcgi_hide_header X-Powered-By;
若使用 proxy_pass,则加:proxy_hide_header X-Powered-By;
顺手关掉其他泄露源
版本号还可能从错误页、调试输出或代码里漏出来:
立即学习“PHP免费学习笔记(深入)”;
- 关闭错误显示:
display_errors = Offhtml_errors = Off
(同样在php.ini中设置) - 避免在页面 HTML 注释、API 响应体、404/500 错误页中硬写
PHP 8.6或类似字样 - 检查项目中是否调用了
phpinfo(),或直接输出PHP_VERSION、phpversion()等敏感内容
验证是否真正隐藏了
别只信配置,要用命令确认:
- 执行:
curl -I https://your-site.com - 查看响应头中是否还有
X-Powered-By: PHP/8.6.x - 顺便留意
Server头是否也暴露了 Nginx/Apache 版本(如需一并隐藏,可配server_tokens off;或ServerTokens Prod)



















