
在出現這種情況的時候需要檢查我們header頭中的參數
Content-Type:的值
php://input可以讀取沒有處理過的POST數據。相較于$HTTP_RAW_POST_DATA而言,它給內存帶來的壓力較小,并且不需要特殊的php.ini設置。php://input不能用于enctype=multipart/form-data
不過我通過代碼對比總結,得出結果如下:
1.Coentent-Type為application/x-www-data-urlencoded和multipart/form-data兩種情況下,PHP會將請求數據傳遞給$_POST
2.PHP不能識別的Content-Type類型的時候,會將http請求包中相應的數據填入變量$HTTP_RAW_POST_DATA.
3, 只要Content-Type不為multipart/form-data的時候,PHP將不會把http請求body體數據填入php://input,否則其它情況都會。填入的長度,由Content-Length指定。
4,只有Content-Type為application/x-www-data-urlencoded時,php://input數據才跟$_POST數據相一致。
5,php://input與HTTPRAWPOSTDATA??.相同,但是php://input比??HTTP_RAW_POST_DATA更效率,并不需要配置php.ini
6.http請求的,GET形式下,body體為空。
解決辦法
修改php.ini
enable_post_data_reading = On always_populate_raw_post_data = On
重啟apache即可解決。
推薦:《PHP教程》
站長資訊網