PHP程序页面出现“Warning: Cannot modify header information - headers already sent by ….“报错

问题描述
访问PHP程序页面时,出现"Warning: Cannot modify header information - headers already sent by …."报错。

问题原因

在PHP中Cookie的使用存在一些限制,本文的报错是由于PHP程序在输出内容之前产生了Cookie。

setcookie函数必须在标签之前使用。

使用setcookie函数之前,不可以使用echo函数输入内容。

在网页被加载完后,Cookie才会出现。

setcookie函数必须在数据输出浏览器前对Cookie进行赋值。
 

解决方案

若需要在输出内容之前产生Cookie,可以在程序的最上方加入ob_start函数,ob_start是打开输出缓冲区的函数。例如void ob_start(void),当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。如果需要输出缓冲区的内容,可以使用ob_end_flush或flush函数输出缓冲区的内容。

如果是使用ECS服务器,需要在php.ini中开启output_buffering,即output_buffering = On,则会开启所有PHP程序的输出缓存。但是这样做会影响PHP执行效率,请根据服务器的性能和代码的复杂度选择是否开启该功能。

如果是Linux系统的虚拟主机,请在控制面板页面的PHP.ini设置中,将 输出缓冲区数据块设置 参数设置为 启用,然后等待3分钟后进行测试,确认符合预期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值