PHP最大表單提交限制max_input_vars

每天都進步一點點發表於2018-08-22

通常我們使用ajax與php互動時,我習慣查詢用GET方式,提交資料以POST方式。我們都知道POST預設情況下可以一次提交8M的資料,這算是一個非常大的量了,一般情況下我們一次提交的資料基本是不會超過這個數。然而,PHP從5.3.9開始增加了一個變數max_input_vars,用來提交限制表單數量。踩這個坑是在一次資料提交中,由於是列表多選,提交的時候總出錯。debug的時候,列印$_POST發現每次都是剛好1000個元素,而有些固定的引數居然沒有了。第一反映肯定是被截斷了,必然是配置有問題。於是直接就去檢查php的配置檔案(當時也忘了nginx也有可能限制,但事實證明沒有)。在php.ini裡一通搜尋,因為也不知道是什麼配置限制了,就直接按關鍵字limit和max去搜,最後鎖定目標 max_input_vars = 1000,百度查證果然是這貨。當即將限制數值改大,重啟php-fpm就解決了。

反思:事實上,通過這種改大限制的方式也是治標不治本,最好還是從源頭上改變,提交資料時,將資料整合好,不要有大量表單的提交。

相關文章