header information - headers already sent by (output started at /data/home..... in /data/home/..../option.php on line 820解决办法

今晚进入站点后台,页面上方居然显示这个东西,头大了。

看也看不懂,真不知道从哪里入手了,幸好有万能的百度,试过各种方法都没能解决。
Warning: Cannot modify header information - headers already sent by (

后来看了一篇文章说是跟PHP输出缓冲区有关,还好一直有随时备份的好习惯,那就试试吧,实在不行就恢复下。

阿里云php输出缓存

到控制台php.ini设置页面启用输出缓冲,然后刷新页面还真好了。

出现这个错误的原因是, 在header之前已经输出了某些数据,而输出这些数据的同时, apache将会同时发送一个响应状态到浏览器上(既然有输出,即这个请求是有效的),而其后你又再次使用header函数发送http头,则会返回这个错误,错误的意思是:HTTP头已经发送出去了,你不能对他再做修改。

为什么使用缓冲区可以避免这个错误呢?

因为header函数是不受缓冲区影响的,当一碰到header函数的时候,PHP马上执行apache发送这一个http头都浏览器.而输出的数据PHP打开输出缓冲区后, 这些数据将会存放在缓冲区,等待输出.这样就可以避免了之前所发生的错误。

因为我用的是阿里云的主机,修改php.ini是受限制的,只有很少的几项能改。

其他主机可参考php.ini输出缓存(output_buffering)设置用法

 

 

 

One thought on “header information - headers already sent by (output started at /data/home..... in /data/home/..../option.php on line 820解决办法

  1. 末陌

    wordpress异常页面导致服务器路径泄漏解决办法:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHAis initialing...