首頁(yè) > 運營(yíng) > 幫助中心 > 正文

PHP中的max_input_vars指令介紹

2020-09-18 19:09:29
字體:
來(lái)源:轉載
供稿:網(wǎng)友

今天接到客服部工作人員反饋的一個(gè)客戶(hù)的問(wèn)題,產(chǎn)品是允許用戶(hù)添加一個(gè)產(chǎn)品屬性的,而每個(gè)屬性是由多個(gè)表單域組成 ,這樣當每添加一個(gè)屬性就等于添加了n個(gè)表單域,這個(gè)客戶(hù)添加的非常的多,發(fā)現在提交保存的時(shí)候總是失敗,提示其中一個(gè)表單元素的索引值不存在,經(jīng)測試是發(fā)現服務(wù)端接收的一些表單域丟失了一部分。

起初分析的是服務(wù)器接收的數據超出了php設置的max_post_size(其實(shí)當時(shí)已經(jīng)設置了8M,足夠使用了),修改了測試發(fā)現此問(wèn)題仍然存在。后來(lái)將用戶(hù)原來(lái)的一些添加的表單元素進(jìn)行刪除,再重新添加同樣數據庫表單域可以成功,但一旦超出一定數量的表單域就會(huì )發(fā)生丟失的情況,這個(gè)時(shí)候首先懷疑的是apache是否有類(lèi)似限制接收隱藏域的指令,找了沒(méi)有找到,緊接著(zhù)在php中批到一個(gè)max_input_vars這個(gè)指令,意思就是說(shuō)php中允許接收的最大表單域數據,到目前為止基本上是確定這個(gè)原因引起的了,獎其修改為2000,重啟Apache,發(fā)現一切正常。

max_input_vars默認值為1000導致多表單提交失敗

再看了下php-fpm的日志,有點(diǎn)信息可以參考了。

[25-Sep-2014 15:19:30] WARNING: [pool www] child 28329 said into stderr: "NOTICE: PHP message: PHP Warning:  Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0"

提示input 變量個(gè)數超過(guò)1000,建議修改php.ini文件中的 max_input_vars,PHP從5.3.9開(kāi)始增加一個(gè)變量 max_input_vars 用來(lái)限制提交的表單數量。

媽的,我這個(gè)功能(類(lèi)似于phpmysqladmin功能,讀取數據庫表,然后能寫(xiě)入編輯,然后數據庫字段有128個(gè),然后每個(gè)字段有11個(gè)input框)大概有1400多個(gè)input,(多么痛的領(lǐng)悟,為毛這么吊,研發(fā)一個(gè)表搞這么多字段),

然后我在php.ini里面加入

max_execution_time = 30; Maximum execution time of each script, in seconds

max_input_time = 60; Maximum amount of time each script may spend parsing request data

max_input_vars = 2000

重啟php-fpm后,功能正常了??慈罩竞苤匾?。

總結:提起php中的max_input_vars 估計很少人知道這個(gè)這個(gè)指令,因為他的使用場(chǎng)景實(shí)在是太少了,在php.ini中這個(gè)指令的定義是指服務(wù)端最大可以接收的表單域的數量多少,默認是1000,這足夠我們平時(shí)使用了。但仍然有一些特殊的情況下需要修改此值的大小。

發(fā)表評論 共有條評論
用戶(hù)名: 密碼:
驗證碼: 匿名發(fā)表