困惑的人寻求:“警告:无法修改标题信息”

时间:2011-04-26 19:00:03

标签: php header output-buffering

我非常想看到PHP警告“无法修改标题信息”。为什么?因为这是明智的。你不应该在身体后发送标题。

但我可以!!如果我在控制器中调试一些变量并且之后不立即exit,那么脚本只会重定向到下一页:所有变为'井'并且我无法看到我的var转储。

在PHP中我可以配置(?)它不缓冲输出?或者无论是什么导致这种奇怪的行为!

为了清楚起见:我 DO 想要PHP警告而我不要希望重定向header('Location: ...')能够正常工作。

我很确定在我之前的(本地)服务器(两个W XP)上它确实抛出输出/标题警告......

修改
为了说明,使用最基本的代码(我实际上不使用,但间接使用它):

$form->validate($_POST);
var_dump($form->errors); // !!
if ( $form->noErrors ) {
  header('Location: '.$form->redirectUrl);
  exit;
}

答案
@Heandel错误报告就是一切(包括通知和弃用等)。无论如何:无论错误显示如何都不可能发送标题。

@tandu我正在使用my own framework,但这也无关紧要。

@ceejayoz我的代码中没有一个ob_start。我不使用它。 (模板ngin使用它,但模板不会在回发中触发。)

@Itay Moav我不在共享主机中。我在Windows XP SP2上本地使用PHP 5.3.0(WAMP)。在我的网络服务器(VPS)上,这不会发生:我得到一个很好的PHP警告。

更新
谢谢盖伦

来自php.ini:

; Note: Output buffering can also be controlled via Output Buffering Control
;   functions.
; Possible Values:
;   On = Enabled and buffer is unlimited. (Use with caution)
;   Off = Disabled
;   Integer = Enables the buffer and sets its maximum size in bytes.
; Note: This directive is hardcoded to Off for the CLI SAPI
; Default Value: Off
; Development Value: 4096
; Production Value: 4096
; http://php.net/output-buffering
output_buffering = On

转动Off就可以了。我想要没有自动输出缓冲。谢谢!

2 个答案:

答案 0 :(得分:5)

在php.ini文件中找到output_buffering并确保将其设置为0

http://us.php.net/manual/en/outcontrol.configuration.php#ini.output-buffering

答案 1 :(得分:2)

flush()放在var_dump

之后