<< 点击返回技术分享列表

PHP的header()函数跳转失败

浏览量 9645时间 2020-12-29
关于header()前面 为什么不能有任何输出的问题。
之前在header () 之前输出,并没有任何报错信息。
header() 官网定义必须在任何实际输出之前调用,不管是普通的HTML标签,还是文件或PHP输出的空行,空格。但是,在测试的时候发现有些输出是可以的。
这是因为——缓存。
当执行输出的时候,比如 echo,print。输出并没有立即送给 web server, 而是将数据写入 php buffer。php output_buffering 机制好处当然提升性能。其实 php 文件最终在浏览器上显示,走过3个缓冲阶段: php buffer=》web server buffer=》browser buffer。 最后显示到浏览器
默认情况下,php buffer 是开启的,而且该 buffer 默认值是4096,即4 kb。你可以通过在php.ini配置文件中找到output_buffering配置
服务器会缓存输出,虽然你使用了echo / print 但在那个时候服务器还没有将这些内容作为HTTP报文输出,这个时候仍可以有机会修改HTTP头。如果只想验证下header官网定义的不得在任何输出之前输出引发错误,可以在header之前输出一个绝对超过缓存大小的HTTP内容就好了。
如果output_buffering=off,被设置成了off,那么页面内容就是即时输出的,这时header()前面存在html元素或者echo、print的元素肯定是不行的。



上一篇:Flutter——未来一段时间内的跨平台开发终极之选
推荐阅读
免费体验新企云平台后台管理系统立即体验