0

可能重复:
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 没有任何问题。如何解决这个问题。

4

5 回答 5

3

<?php确保在文件和包含的文件中,在之前绝对没有输出字符(甚至没有空白或换行符) 。

于 2012-11-30T10:34:58.173 回答
0

Are you using ob_start() on the first line of your code (before html tag)?

于 2012-11-30T10:32:40.517 回答
0

去掉 php 结束标签后试试?>
为什么有些脚本会省略 php 结束标签 '?>'?
PHP结束标记

于 2012-11-30T10:34:44.703 回答
0

您可以禁用输出缓冲

ini_set('output_buffering', 0);

在你的 PHP 文件或设置中

output_buffering = Off

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

于 2012-11-30T10:34:07.720 回答
-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() 和缓冲区释放。要使用标头重定向,不应已发送任何其他标头。

或者,如果您之前有空间,您可以更改

于 2012-11-30T10:36:11.380 回答