關於升級php7後的報錯處理

2020-07-16 10:06:15

由於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後的報錯處理的詳細內容,更多請關注TW511.COM其它相關文章!