在出現這種情況的時候需要檢查我們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教學》
以上是解決php無法接受post值的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!