根据PHP文档:
必须在通过普通HTML标记,文件中的空行或PHP发送任何实际输出之前调用header()。使用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;
?>
所有工作都很好,没有错误加速,我顺利地在输出中获得了<html>
标记,在标题中得到了X-Header
。
我正在使用PHP 7.1.9,所以文档说的仍然正确吗?
答案 0 :(得分:4)
文档仍然正确。
出于性能目的,解释器将输出放在缓冲区中。当第一次填充缓冲区时,它会在发送缓冲区内容之前发送标头。
这使得脚本在发送标题之前会产生少量输出。
详细了解output buffering配置设置。
选项output_buffering
允许关闭或打开该功能,甚至可以设置缓冲区的大小。
选项implicit_flush
告诉解释器在每个输出块之后刷新缓冲区。这会强制您的脚本在输出之前正确发送标题。
答案 1 :(得分:-1)
修改您的php.ini
和enable Output Buffering
..