2016-03-06 43 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聲明顯示: