我被告知在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");
?>
答案 0 :(得分:2)
如果你在php.ini中使用output_buffering = On,你可以在发送标题后发送cookie。
如php.ini中所述评论:
输出缓冲允许您发送标题行(包括Cookie) 甚至在您发送正文内容之后,也会以降低PHP输出的速度为代价 层了一下。您可以通过调用在运行时启用输出缓冲 输出缓冲功能。您还可以启用输出缓冲 通过将此指令设置为On来获取所有文件。如果你想限制 缓冲区的大小到一定的大小 - 你可以使用最大值 字节数而不是&#39; On&#39;,作为此指令的值(例如, output_buffering = 4096)。