<menu id="ocigx"><listing id="ocigx"><em id="ocigx"></em></listing></menu><em id="ocigx"><track id="ocigx"><strong id="ocigx"></strong></track></em>
<ins id="ocigx"></ins>

<samp id="ocigx"></samp>

<mark id="ocigx"><ruby id="ocigx"><legend id="ocigx"></legend></ruby></mark><bdo id="ocigx"></bdo>
      <kbd id="ocigx"></kbd>
      首頁 > 運營 > 幫助中心 > 正文

      PHP中的max_input_vars指令介紹

      2020-09-18 19:09:29
      字體:
      來源:轉載
      供稿:網友

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

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

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

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

      [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 變量個數超過1000,建議修改php.ini文件中的 max_input_vars,PHP從5.3.9開始增加一個變量 max_input_vars 用來限制提交的表單數量。

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

      然后我在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 估計很少人知道這個這個指令,因為他的使用場景實在是太少了,在php.ini中這個指令的定義是指服務端最大可以接收的表單域的數量多少,默認是1000,這足夠我們平時使用了。但仍然有一些特殊的情況下需要修改此值的大小。

      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表