2016-11-22 51 views
0

注意:我是而不是试图解决headers already sent问题。我正在尝试创建 one!PHP:演示头已发送

我以为我明白是什么原因导致了这个错误,我试图向一些学生展示它。下面是一个示例脚本:

Hello 

<?php 
    ini_set('display_errors',1); 
    error_reporting(E_ALL); 

    print 'This space for rent …'; 

    setcookie('test',12); 
    header('Testing'); 
?> 

正如你看到的,我想我最好设置一个头之前发送输出,无论是间接设置一个cookie,或者直接使用header()功能。

听起来很奇怪,我该如何得到这个错误?

+1

如果php.ini中的输出缓冲处于打开状态,它不会将错误作为输出在最后被捕获并发送。这有点像“懒惰的人”的方式来防止这些错误,而不是实际修复导致它们的脚本。你可以通过关闭输出缓冲或在输出之前用类似'ob_end_clean()'(然后输出,然后标题)来结束输出缓冲来创建错误。 –

+0

我没有意识到可以在'php中做到这一点。 ini'。你的建议做到了。你能否将你的评论变成答案,以便我可以接受? – Manngo

回答

1

如果输出缓冲在php.ini中打开,它不会抛出错误,因为捕获输出并在最后发送。这有点像“懒惰的人”的方式来防止这些错误,而不是实际修复导致它们的脚本。你可以通过关闭输出缓冲或在输出之前使用类似ob_end_clean()(然后输出,然后标题)来创建错误

+0

正如我上面评论的,我没有意识到你可以在'php.ini'中做到这一点。我也发现你可以将它添加到'.htaccess'文件中:'php_value output_buffering ...'。谢谢你的帮助。 – Manngo

0

要创建此错误,只需在页眉之后的任何地方使用header()函数即可。

<html> 
<head> 
<title>.....</title> 
</head> 
<?php 
header("location:index.php"); 
?> 

确保你的php.ini被设置得显示这些错误。