由於php7的出現帶來大幅的效能提升,想體驗下新版本帶來的特性,因此做了升級。
發現網站中請求介面時發生錯誤,排查後把解決方法記錄下來
升級php後站點報錯,提示如下:
Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set ‘always_populate_raw_post_data‘ to ‘-1‘ in php.ini and use the php://input stream instead. in Unknown on line 0 Warning: Cannot modify header information - headers already sent in Unknown on line 0
透過查詢php官網後得知,在php5.6.X以後版本某些特性已經被廢棄,詳情查看:
http://php.net/manual/zh /migration56.deprecated.php
#原因是:
$HTTP_RAW_POST_DATA 和 always_populate_raw_post_data
使用always_populate_raw_post_data 會導致在填入$HTTP_RAW_POST_DATA 時產生E_DEPRECATED 錯誤。
請使用 php://input 取代 $HTTP_RAW_POST_DATA, 因為它可能會在後續的 PHP 版本中移除。
設定 always_populate_raw_post_data 為 -1 (這樣會強制 $HTTP_RAW_POST_DATA 未定義,所以也不回導致 E_DEPRECATED 的錯誤) 來體驗新的行為。
修復方法:
1、修改php的設定文件,找到php.ini。把 always_populate_raw_post_data 開啟,並設定為 -1 。
always_populate_raw_post_data = -1
2、如果專案中有用到$HTTP_RAW_POST_DATA的更改為:
原來是$info = $HTTP_RAW_POST_DATA;
#更改為$info = file_get_contents( 'php://input');
推薦:《PHP7》
以上是關於升級php7後的報錯處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!