phpinfo() 输出被截断时,应依次检查并调整 output_buffering 大小、禁用 zlib.output_compression、手动管理输出缓冲、排查 Suhosin 限制、提升 memory_limit 和 max_execution_time。

如果您在浏览器中访问 phpinfo() 页面时发现输出内容被截断,可能是由于 PHP 输出缓冲区限制或服务器配置导致的。以下是解决此问题的步骤:
一、增大 output_buffering 缓冲区大小
PHP 的 output_buffering 配置项控制脚本输出前的缓冲容量,默认值可能过小,无法容纳完整的 phpinfo() 输出。修改该值可避免中途截断。
1、找到当前 PHP 配置文件 php.ini 的路径,可通过执行 php --ini 命令确认。
2、用文本编辑器打开 php.ini 文件,搜索 output_buffering。
立即学习“PHP免费学习笔记(深入)”;
3、将原行 output_buffering = 4096(或 off / 0)修改为 output_buffering = 65536 或更大整数值(如 131072)。
4、保存文件后,重启 Web 服务器(如 Apache 执行 sudo systemctl restart apache2,Nginx + PHP-FPM 则重启 php-fpm 和 nginx)。
二、禁用 zlib.output_compression 并检查相关压缩设置
启用 zlib.output_compression 可能与输出缓冲机制冲突,尤其在高信息量输出(如 phpinfo)时引发截断或乱码。
1、在 php.ini 中搜索 zlib.output_compression。
2、将其值设为 Off,即修改为 zlib.output_compression = Off。
3、同时检查是否存在 zlib.output_compression_level,如有则注释掉该行或设为 -1(禁用)。
4、保存并重启 PHP 运行环境。
三、使用 ob_end_flush() 显式控制输出缓冲
若无法修改 php.ini(如共享主机环境),可在调用 phpinfo() 前手动管理输出缓冲,确保全部内容刷新到客户端。
1、创建一个新 PHP 文件(如 info.php),写入以下代码:
2、确保该文件无任何空白字符或 UTF-8 BOM 头,且位于 Web 可访问目录下。
3、通过浏览器访问该文件 URL,此时输出将绕过默认缓冲限制,完整呈现。
四、检查 Suhosin 扩展限制(如已启用)
Suhosin 是一个第三方安全扩展,其 suhosin.output.collapse_newlines 和 suhosin.output.filter 等设置可能干扰长输出流。
1、运行 php -m | grep suhosin 确认是否加载了 Suhosin。
2、若存在,在 php.ini 或 suhosin.ini 中添加或修改:suhosin.output.filter = Off 和 suhosin.output.collapse_newlines = Off。
3、保存后重启 PHP 服务。
五、临时提高 memory_limit 和 max_execution_time
phpinfo() 在某些扩展全启环境下可能消耗较多内存或执行时间,触发超限中断。
1、在 php.ini 中定位 memory_limit,改为 memory_limit = 256M。
2、定位 max_execution_time,改为 max_execution_time = 60。
3、也可在 phpinfo() 脚本顶部加入:ini_set('memory_limit', '256M'); ini_set('max_execution_time', 60);。
4、保存配置并重启服务或验证脚本生效。











