2016-03-06 97 views
1

近日笔者从PHP 5.3升级到PHP 5.6不能更改头信息的setcookie

但我在我的代码收到一个错误:

Warning: Cannot modify header information - headers already sent by (index.php:1) in core.php on line 2927 

LINE 2927

setcookie(COOKIE_TOKEN, NULL, -1); 

COOKIE_TOKEN是:

define('COOKIE_TOKEN', 'name'); 

回答

1

警告:不能更改头信息 - 头已经发出已

的问题是由$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。

参见:Warning about `$HTTP_RAW_POST_DATA` being deprecated

0

的警告是明确的。

警告:不能更改头信息 - 已经 发送头(index.php文件:1)在core.php中上线2927

http://php.net/setcookie

的setcookie()定义一个cookie以及其余的HTTP头文件。与其他标题一样,Cookie必须在脚本输出 之前发送(这是一个协议限制)。此 要求您在任何输出之前调用此函数, 包括标记以及任何空格。

移动任何HTML之前的setcookie声明显示:

相关问题