PHP在header或session_start之前输出一些没有ob_start的东西

时间:2016-05-04 06:49:40

标签: php

我被告知在header()或session_start之前输出类似echo / var_dump的内容时,会显示一条警告,如“php无法发送会话cookie-headers已经发送”。

但是下面的代码工作正常。它很奇怪!谁能告诉我原因? PHP版本是5.6.9

<?php 
echo 'hello';
setcookie('a','a');
session_start();
$_SESSION['a'] = 'a';
header("location:test.php");
?>

1 个答案:

答案 0 :(得分:2)

如果你在php.ini中使用output_buffering = On,你可以在发送标题后发送cookie。

如php.ini中所述评论:

  

输出缓冲允许您发送标题行(包括Cookie)   甚至在您发送正文内容之后,也会以降低PHP输出的速度为代价   层了一下。您可以通过调用在运行时启用输出缓冲   输出缓冲功能。您还可以启用输出缓冲   通过将此指令设置为On来获取所有文件。如果你想限制   缓冲区的大小到一定的大小 - 你可以使用最大值   字节数而不是&#39; On&#39;,作为此指令的值(例如,   output_buffering = 4096)。