2012-02-22 20 views
33

我在我的本地機器上使用WAMP時,當提交2000個輸入字段的FORM(method =「POST」)時,我只能讀取1001個_POST變量。即使用Netbeans調試器,我可以清楚地看到_POST大小始終爲1001,如果表單中有超過1001個輸入字段。如何增加PHP中的最大POST變量?

我使用這個http://ideone.com/GAw14 java代碼來生成帶有N個輸入字段的窗體並進行測試。

同樣在另一臺機器(WAMP)中工作正常,我可以在其中看到所有POST變量。

請幫我解決我的問題。

+1

爲什麼不從另一臺機器取出php.ini並將其與當前機器進行比較,看看應該爲post_max_size等變量添加什麼內容? – 2012-02-22 16:59:07

+0

你在使用Suhosin(硬化PHP)嗎? – jprofitt 2012-02-22 16:59:56

+0

我不知道如果這是PHP或網絡瀏覽器限制... – 2012-02-22 16:59:57

回答

76

PHP 5.3.9引入了max_input_vars配置選項,默認值爲1000.查看PHP手冊的Runtime Configuration部分。默認值和更改日誌位於頁面的頂部。

可通過更新服務器的php.ini,添加.htaccess文件或adding a line to httpd.conf來更改該值。

+0

完美!!!謝謝。你是對的:) – 2012-02-22 17:26:32

+1

信用轉給昨天有這個問題的同事,然後很好地分享他的發現與團隊:) – lightster 2012-02-22 17:29:34

+1

對於有人在未來的搜索,我發現默認的cPanel服務器截至2013年3月15日限制輸入變量的數量爲512.我們的一些腳本通過了大大超過,並將max_input_vars添加到PHP .ini修復了這個問題。 – 2013-03-15 18:09:16

-1

我懷疑問題是隨您POST請求的數據量。沒有設置限制可以設置的$ _POST變量的數量。但是,默認情況下,POST數據的內存限制爲8MB。

在您的php.ini文件中,嘗試修改post_max_size的值並將其設置爲更高的值。不要忘記在更改完成後重新啓動Apache。

+0

我修改post_max_size爲81M也是0,重啓WAMP仍然存在問題。 – 2012-02-22 17:14:17

17

如果您使用Suhosin加固PHP,您可能會達到它施加的最大變量限制。在你的php.ini中,你可以添加

[suhosin] 
suhosin.request.max_vars = 1000 
suhosin.post.max_vars = 1000 

1000更改爲任何你想要的,然後重新啓動你的web服務器。

我在Drupal權限頁面上遇到過這個問題,當時有很多模塊安裝了大量的角色,導致大量的複選框。在任何事情被忽略之後,它只會保存一定數量的它們。

聽起來好像這可能不是你的問題,但是因爲未來有人可能會在搜索相關內容時偶然發現這個問題,所以我會繼續前進並投入使用,因爲它花了我很多時間才弄清楚當我被絆倒。

+0

謝謝。我沒有使用Suhosin。 – 2012-02-22 17:22:37

+1

沒有用於php5.4或php5.5的suhosin :( – ZiTAL 2013-11-26 12:09:11

0

我解決了這個問題。打開php.ini配置文件,並添加這些行

[了Suhosin]

suhosin.post.max_vars = 20000個

suhosin.request.max_vars = 20000

3

我解決我的$ _ POST最大輸入 - 問題通過添加以下爲php.ini:

max_input_vars = 5000 
suhosin.request.max_vars = 5000 
suhosin.post.max_vars = 5000 

注意suhosin.request.max_vars也。

+0

'max_input_vars'完全適合我的情況:) – Vineet 2017-06-06 09:00:11