【问题标题】:PHP when output something before header or session_start without ob_startPHP在没有ob_start的情况下在header或session_start之前输出一些东西
【发布时间】:2016-05-04 06:49:40
【问题描述】:

我被告知在 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");
?>

【问题讨论】:

  • 很可能是因为output_bufferingmentioned here 一样(答案有点低 - 带上铲子,因为你需要挖掘)。跨度>
  • 您说的是“遵循代码”。它在哪里?
  • @Epodax 有点失望?更像是被埋葬了:-)
  • 在网络上还是在本地机器上?

标签: php


【解决方案1】:

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

如 php.ini 评论中所述:

输出缓冲允许您发送标题行(包括 cookie) 即使在您发送正文内容之后,以减慢 PHP 输出为代价 层一点。您可以通过调用在运行时启用输出缓冲 输出缓冲功能。您还可以启用输出缓冲 通过将此指令设置为 On 来处理所有文件。如果你想限制 缓冲区的大小到一定大小 - 您可以使用最大值 字节数而不是“开”,作为该指令的值(例如, output_buffering=4096)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2019-12-07
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    相关资源
    最近更新 更多