我有一個很大的窗體,裏面有很多很多的東西。升級到PHP 7後,在新環境中,部分POST元素未被服務器接收。 $_POST
數組不爲空,它包含許多元素,但$_POST
數組末尾的一些元素缺失。爲什麼POST數據被PHP截斷?
不顯示錯誤消息。
增加post_max_size
在php.ini
(從8M到128M)沒有幫助。數據結構本身不太大,小於400k,所以這不應該是原因。
這是爲什麼呢?
我有一個很大的窗體,裏面有很多很多的東西。升級到PHP 7後,在新環境中,部分POST元素未被服務器接收。 $_POST
數組不爲空,它包含許多元素,但$_POST
數組末尾的一些元素缺失。爲什麼POST數據被PHP截斷?
不顯示錯誤消息。
增加post_max_size
在php.ini
(從8M到128M)沒有幫助。數據結構本身不太大,小於400k,所以這不應該是原因。
這是爲什麼呢?
截至PHP 5.3.9。存在名爲max_input_vars的新php.ini設置。它確定從接收的數據中可以使用多少項。默認情況下它是1000,這意味着只有$ _POST的前1000個項目會被使用。
所以,如果增加post_max_size沒有幫助,然後嘗試將max_input_vars從1000增加到5000或任何你需要的。
imo,這將值得一看。它可能已被設置爲高於之前版本PHP.INI文件中的默認值,並且尚未在PHP7 ini.file中增加。不知道爲什麼需要反對票。 –
我也不贊同反對票。 是的,$ _POST中的項目太多並不好,但如果您必須在您或其他人的舊代碼下升級PHP版本,那麼您不一定有足夠的資源來實現代碼結構的現代化。只要考慮重新測試的時間要求和失敗的潛在後果即可。 –
定義'多對多items' –
@CharlotteDunois是〜2000。確切的數字在問題發生時是不相關的,關鍵在於它超過了1000個。:) –
many-many沒有定義,也沒有明確地超過X.直接用數字來代替數字條款的效率更高。但是,這是近兩年前的一個問題。 –