【问题标题】:php Header already sent first line [duplicate]php标头已经发送了第一行[重复]
【发布时间】:2018-01-07 07:24:21
【问题描述】:
<?php 
if(!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != "on")
{
error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);

header("Location: https://somesite.com/it");
die('should have redirected by now');

} 
?>

这是我使用的实际代码,第一行代码之前没有空格或任何内容。

返回: 警告:无法修改标头信息 - 第 8 行 /home/somesite/public_html/iq/test.php 中的标头已由(输出开始于 /home/somesite/public_html/it/test.php:1)发送 现在应该已经重定向了

为什么说我在第一行发送了标题?我该如何解决这个问题?

【问题讨论】:

  • flush() 之后不能发送标头。
  • 这看起来是我给出的更好的答案,看看stackoverflow.com/questions/4398951/…
  • 该答案可以将内容放入 https,但是我仍然需要能够更改标题。由于我的代码没有任何问题,什么会导致标题无法正常工作?

标签: php http-headers http-redirect


【解决方案1】:

在发送标头之前不要调用flush();。它发送输出缓冲区,因此它触发头部发送阶段的结束。

【讨论】:

  • 尝试过仍然警告:无法修改标头信息 - 标头已由 /home/somesite/public_html/iq 中的(输出开始于 /home/somesite/public_html/iq/test.php:1)发送第 7 行的 /test.php 现在应该已经重定向了
猜你喜欢
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
相关资源
最近更新 更多