应禁用php版本信息暴露:一、php.ini中设expose_php=off;二、apache用header unset x-powered-by;三、nginx用fastcgi_hide_header和proxy_hide_header;四、关闭display_errors与html_errors,配静态错误页;五、清理代码中phpinfo()及php_version输出。

如果您运行PHP应用,但未隐藏PHP版本信息,则攻击者可能通过HTTP响应头中的X-Powered-By字段或错误页面直接获取PHP版本号,从而针对性地利用已知漏洞发起攻击。以下是降低被漏洞扫描发现风险的配置技巧:
一、禁用X-Powered-By响应头
该响应头默认由PHP自动添加,暴露PHP版本及服务器环境,移除后可减少指纹识别线索。
1、打开php.ini文件,定位到expose_php指令行。
2、将expose_php = On修改为expose_php = Off。
立即学习“PHP免费学习笔记(深入)”;
3、保存文件并重启Web服务器(如Apache或Nginx)使配置生效。
二、通过Apache配置移除响应头
在Apache环境中,即使expose_php已关闭,仍可能因模块残留或其他配置导致X-Powered-By出现,需在服务器级配置中强制删除。
1、编辑Apache主配置文件(如httpd.conf)或站点虚拟主机配置文件。
2、在
3、确保mod_headers模块已启用,若未启用则需执行a2enmod headers(Debian/Ubuntu)或取消httpd.conf中LoadModule headers_module行的注释。
4、重启Apache服务。
三、通过Nginx配置移除响应头
Nginx本身不主动添加X-Powered-By,但若后端PHP-FPM或FastCGI配置不当,可能透出该头;需在Nginx层面统一过滤。
1、在server块或location ~ \.php$块中添加:fastcgi_hide_header X-Powered-By;。
2、同时添加:proxy_hide_header X-Powered-By;(如使用反向代理场景)。
3、保存nginx.conf,执行nginx -t验证语法,再执行nginx -s reload重载配置。
四、自定义错误页面并剥离PHP标识
默认PHP错误页面会显示PHP版本及编译信息,启用自定义错误页可消除此类敏感输出,并防止display_errors开启时泄露细节。
1、在php.ini中设置:display_errors = Off。
2、设置:html_errors = Off(禁用HTML格式错误报告)。
3、在Web服务器中配置404、500等错误页面指向静态HTML文件,确保该文件不含PHP生成痕迹及版本相关文字。
五、检查并清理PHP脚本输出中的版本信息
部分开发者可能在脚本中主动调用phpinfo()、echo PHP_VERSION或通过get_cfg_var('version')输出版本,这些行为会直接暴露信息。
1、全局搜索项目代码中所有出现phpinfo()的位置,确认其仅存在于开发环境且已被注释或删除。
2、查找包含PHP_VERSION、PHP_MAJOR_VERSION、phpversion()的输出语句,移除或条件化限制(如仅$_SERVER['REMOTE_ADDR'] === '127.0.0.1'时允许)。
3、审查所有调试日志输出逻辑,确保生产环境日志中不记录PHP版本字符串。











