You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP Header报错求助:第16行检测到换行符问题排查

解决Header包含换行符的报错问题

这个报错的核心本质是HTTP头部发送前已有提前输出,或是Location目标URL中混入了换行符,结合你的代码,我们可以从这几个方向逐一排查解决:

1. 检查被引入文件的隐形输出问题

你引入的../libs/proxy.php、../libs/config.php、../libs/ip.php这三个文件,很可能是问题源头:

  • 如果文件开头的<?php标签前有空格、换行,或者结尾的?>标签后有多余的空格/换行,这些内容会被PHP当作输出提前发送,导致header无法正常触发。
  • 若文件内部有echo、print这类主动输出语句,也会直接打断header的发送逻辑。

解决办法:

  • 打开这三个文件,确保<?php是文件的第一个字符,前面无任何空白内容;
  • 建议直接删除文件末尾的?>标签(PHP会自动识别文件结束,保留该标签很容易不小心添加多余空白)。

2. 排查当前文件的BOM编码问题

如果你的PHP文件是UTF-8编码且带有BOM(字节顺序标记),服务器会把BOM当作输出内容提前发送,这是一种容易被忽略的隐形输出,会直接干扰header的发送。

解决办法:

  • 用编辑器(如VS Code、Notepad++)打开当前PHP文件,将编码设置为「UTF-8 无BOM」后重新保存。

3. 清理$get_link中的换行符

你的$get_link是通过file_get_contents($api_url)获取的API返回值,如果API返回的URL末尾带有换行符、空格等空白字符,拼接后会让Location头中混入非法的换行符,违反HTTP规范。

解决办法:
在获取链接后立即用trim()函数清理首尾空白字符:

$get_link = trim(file_get_contents($api_url));

这样就能确保Location目标是干净的合法URL,不会包含换行符。

额外辅助排查技巧

可以在文件最开头添加以下代码,让PHP显示所有错误信息,帮助你快速定位提前输出的来源:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

按照以上步骤排查,应该就能彻底解决这个Header报错问题了。

内容的提问来源于stack exchange,提问作者imoneymakeri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:35:42