我最近从 php 5.3 升级到 php 5.6
但是我的代码中收到一个错误:
Warning: Cannot modify header information - headers already sent by (index.php:1) in core.php on line 2927
2927路
setcookie(COOKIE_TOKEN, NULL, -1);
COOKIE_TOKEN是:
define('COOKIE_TOKEN', 'name');
警告:无法修改标头信息 - 标头已发送
该问题是由$HTTP_RAW_POST_DATA
引起的:http://php.net/manual/en/migration56.deprecated.php
底部有一个示例应该有助于确认它:
<?php
ini_set('always_populate_raw_post_data',-1);
$HTTP_RAW_POST_DATA = file_get_contents('php://input');
echo $HTTP_RAW_POST_DATA;
?>
http://php.net/manual/en/reserved.variables.httprawpostdata.php
PHP 5.6 已弃用,自动填充HTTP_RAW_POST_DATA 变量并引入了弃用通知。如果设置处于左侧 默认值为 0 时,核心中的请求可以触发此通知 尽管HTTP_RAW_POST_DATA未被使用或访问。
另请参阅:有关弃用"$HTTP_RAW_POST_DATA"的警告
警告很明确。
警告:无法修改标头信息 - 标头已由 发送 (索引.php:1) 在核心.php在 2927 行
从 http://php.net/setcookie:
setcookie() 定义了一个要与其余部分一起发送的 cookie HTTP 标头。与其他标头一样,必须在任何标头之前发送 Cookie 脚本的输出(这是协议限制)。这 要求您在任何输出之前调用此函数, 包括和标签以及任何空格。
在任何HTML
出现之前移动该 setcookie 语句: