根据 PHP 文档:
header()必须在发送任何实际输出之前调用,无论是通过普通的 HTML 标记、文件中的空行还是来自 PHP。使用 include 或 require 函数或其他文件访问函数读取代码,并且在调用 header() 之前输出空格或空行,这是一个非常常见的错误。使用单个 PHP/HTML 文件时存在同样的问题。
但是当我尝试文档报告的示例时(稍作改动):
<html>
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header('X-Header: http://www.example.com/');
exit;
?>
Run Code Online (Sandbox Code Playgroud)
一切正常,没有出现错误,我顺利地<html>在输出和X-Header标题中找到了我的标签。
我使用的是 PHP 7.1.9,所以文档所说的仍然正确吗?
文档仍然是正确的。
出于性能目的,解释器将输出放入缓冲区。当缓冲区第一次被填满时,解释器发送头,然后发送缓冲区的内容(并清空缓冲区)。在此之后,该函数的任何调用header()都会失败。不能再修改报头,也不能再添加其他报头,因为报头已经发送。
这让脚本在发送标头之前产生少量输出。
阅读有关输出缓冲配置设置的更多信息。
该选项output_buffering允许关闭或打开该功能,甚至可以设置缓冲区的大小。
该选项implicit_flush告诉解释器在每个输出块之后刷新缓冲区。这会强制您的脚本在任何输出之前正确发送标头。
| 归档时间: |
|
| 查看次数: |
784 次 |
| 最近记录: |