在使用PHP开发过程中,经常需要通过phpinfo函数查看当前PHP环境的详细配置信息,但部分场景下执行后会发现页面中的中文注释、配置项说明等内容全部显示为乱码,影响信息读取。

乱码产生的常见原因
phpinfo输出乱码的核心原因是字符编码不匹配,常见的触发场景有以下几种:
- PHP默认输出编码与浏览器解析编码不一致
- 服务器响应头未指定正确的字符集
- php.ini配置文件中默认字符集参数设置错误
- 脚本文件本身的编码格式与输出编码冲突
分步排查与修正操作
第一步:检查当前输出编码
可以先通过简单的代码查看当前PHP的输出编码设置,执行以下代码:
<?php // 查看当前内部编码设置 echo mb_internal_encoding(); // 查看默认输出编码 echo mb_http_output(); ?>
如果输出的编码不是UTF-8或者GBK等常用中文编码,就需要进行后续调整。
第二步:临时设置响应头编码
如果只是单次测试phpinfo,可以在调用phpinfo之前先设置响应头的字符集,代码如下:
<?php
// 设置响应头为UTF-8编码
header('Content-Type:text/html;charset=utf-8');
// 调用phpinfo函数
phpinfo();
?>
这种方式属于临时生效,仅对当前脚本有效,适合快速验证乱码是否由响应头导致。
第三步:修改php.ini配置文件
如果需要永久解决乱码问题,需要修改PHP的配置文件php.ini,找到以下两个参数进行调整:
| 参数名 | 默认值 | 建议设置值 | 说明 |
|---|---|---|---|
| default_charset | UTF-8 | UTF-8 | PHP默认输出字符集,若为空则不会主动设置响应头编码 |
| mbstring.internal_encoding | 无 | UTF-8 | 多字节字符串内部编码,建议与默认字符集保持一致 |
修改完成后需要重启PHP服务或者Web服务器(如Nginx、Apache),配置才会生效。
第四步:检查脚本文件编码
如果上述操作完成后仍然乱码,需要检查存放phpinfo代码的脚本文件本身的编码格式,确保文件编码是UTF-8无BOM格式,避免使用GBK或者带BOM的UTF-8格式保存文件,否则也会导致输出内容解析异常。
验证修正结果
完成上述操作后,重新访问phpinfo页面,若中文配置项、说明文字都能正常显示,说明乱码问题已经解决。如果还存在部分内容乱码,可以检查是否有第三方扩展修改了输出编码,或者服务器层面是否有额外的字符集配置覆盖了PHP的设置。