Cannot modify header information - headers already sent by
解决办法:
if (!headers_sent()) {
header("Content-type: application/json; charset=utf-8");
}
Cannot modify header information - headers already sent by
解决办法:
if (!headers_sent()) {
header("Content-type: application/json; charset=utf-8");
}
2 回答1.2k 阅读✓ 已解决
2 回答754 阅读✓ 已解决
1 回答948 阅读✓ 已解决
1 回答664 阅读✓ 已解决
2 回答815 阅读
1 回答818 阅读
1 回答751 阅读
你上面写的解决方法不是对于 headers already sent 的优雅解决.
标准的解决方案应该为:
使用
ob_
开头的系列函数, 意思是 Output Buffer, 即输出缓冲.使用此系列函数, 可以让你在对浏览器输出内容时, 通过调用
ob_start
, 从而输出内容到缓冲区.在所有业务逻辑处理完成之后, 调用
ob_flush
发送内容并清空缓冲区.在
ob_start
和ob_flush
中间, 根据你的实际情况来控制 header 之类的, 不会造成任何顺序上的问题如果需要, 也可以通过
ob_clean
清除掉所有已经写入缓冲区的内容从而准备重新写入一些数据 (例如碰到错误时你可以这么用)用这系列函数的最大好处就是让你的业务逻辑和输出顺序解耦了, 不再强相关 (逻辑上也不应该相关)
当然它的功能远不止这些, 函数也有一堆, 我这里只是说了最普遍普通的情况, 详细内容请见: https://www.php.net/manual/zh/book.outcontrol.php