如何解决警告"无法修改标题信息"在页面重定向中

时间:2012-11-30 10:28:32

标签: php http-headers http-status-code-301 php4

  

可能重复:
  “Warning: Headers already sent” in PHP

我有 下面的一段代码在顶部进行301重定向,没有任何空格,并且没有任何代码,但是它给出了错误,

Warning: Cannot modify header information - headers already sent by

<?php
   require_once('../../config.php');
   header("HTTP/1.1 301 Moved Permanently");
   header("location: http://www.myapp.com/courses/mycourse-new.php");
?>

我尝试使用ob_start,但没有用。我已经为许多文件做了301而没有任何问题。如何解决这个问题。

5 个答案:

答案 0 :(得分:3)

确保在文件和附带文件中<?php之前绝对没有输出字符(甚至不是空格或换行符)。

答案 1 :(得分:0)

您是否在代码的第一行使用ob_start()(在html代码之前)?

答案 2 :(得分:0)

您可以使用

禁用输出缓冲
ini_set('output_buffering', 0);

在PHP文件中或设置

output_buffering = Off

在php.ini中,一切都会正常工作。

答案 3 :(得分:0)

删除关闭的php标记?>后尝试使用 Why do some scripts omit the closing php tag '?>'?
PHP closing tag

答案 4 :(得分:-1)

使用ob_start()之类的...

`<? 
       ob_start();
       require_once('../../config.php');
       header("HTTP/1.1 301 Moved Permanently");
       header("location: http://www.myapp.com/courses/mycourse-new.php");`

Ob_start将缓冲所有输出,直到脚本exit()和缓冲区释放。要使用标头重定向,不应该已经发送任何其他标头。

如果您之前有空位,也可以更改