簡體   English   中英

PHP max_input_vars

[英]PHP max_input_vars

我收到一條max_input_vars錯誤消息。

我知道有一個php.ini設置可以從 5.3.9 版開始更改此設置,但是,我運行的是 5.1.6 版。

當我查看 5.1.6 服務器的配置信息時,它顯示max_input_vars值為 1000。

我的問題是:即使我運行的是 5.1.6,我也從phpinfo()看到了這個設置,但它不在php.ini文件中。 這是否意味着該值在此版本的 PHP 中是硬編碼的,無法更改?

PHP網上參考:

http://php.net/manual/en/info.configuration.php#ini.max-input-vars

請注意,您不能在運行時使用函數ini_set(name, newValue)設置此指令,例如

ini_set('max_input_vars', 3000);

不起作用。

如文檔中所述,此指令只能按目錄范圍設置,這意味着通過 .htaccess 文件、httpd.conf 或 .user.ini(自 PHP 5.3 起)。

http://php.net/manual/en/configuration.changes.modes.php

將指令添加到 php.ini 或將以下行放入 .htaccess 將起作用:

php_value max_input_vars 3000
php_value suhosin.get.max_vars 3000
php_value suhosin.post.max_vars 3000
php_value suhosin.request.max_vars 3000

您可以將它添加到 php.ini 並且它應該可以工作 - 剛剛在 PHP 5.3.6 上對其進行了測試。

剛剛在 5.3.3 中嘗試了此修復程序,但沒有任何變化。 谷歌搜索我發現這個網頁http://anothersysadmin.wordpress.com/2012/02/16/php-5-3-max_input_vars-and-big-forms/詳細說明了如果您的服務器使用 Suhosin 補丁需要更改的其他設置Debian 下的 Apache 是做什么的。

該網站解釋說:

因此,如果您想將此數字從默認數字 1000 增加到 3000,則必須在 php.ini 中添加以下幾行:

max_input_vars = 3000 suhosin.post.max_vars = 3000 suhosin.request.max_vars = 3000

我測試了它(在/etc/php5/apache2和/etc/php5/cli中向php.ini添加了設置,並成功重新啟動了Apache)但phpinfo中仍然沒有max_input_vars變量。

一些站點指出 PHP 5.3.9 作為此更改將采用的第一個 PHP 版本,所以我的錯首先是 RTM 不正確,盡管我有興趣看到人們報告它在 5.3.3 以上的版本中工作但低於 5.3.9。

現在是 2018 年。當我必須發送超過max_input_vars的請求時,我就陷入了這個問題。 我想出了一個解決方案,像我這樣的新手在更改max_input_vars參數后忘記重新啟動 php fpm 服務。 因為我只嘗試重啟apache2服務,而不是 php fpm

  1. /etc/php/7.0/fpm/php.ini取消注釋代碼並根據需要設置數字
    max_input_vars = 4000
  2. 重新啟動 php fpm 服務,因為我使用的是 php 7。因此,
    sudo service php7.0-fpm restart

希望能幫助到你
Debian Stretchphp7.0上測試

您需要在 php.ini 文件中取消注釋 max_input_vars 值並增加它(exp. 2000),也不要忘記重新啟動您的服務器,這將有助於 99,99%。

使用此指令可以減少使用哈希沖突的拒絕服務攻擊的可能性。 如果輸入變量多於此指令指定的數量,則會發出 E_WARNING,並從請求中截斷更多輸入變量。

我可以建議不要擴展默認值 1000 並通過序列化請求或按塊發送請求來擴展應用程序功能。 否則,您可以將其擴展到所需的配置。

肯定需要在php.ini中設置

請注意,您必須將其放在 Centos7 中的“.user.ini”文件中,而不是在 Centos6 中使用的“php.ini”文件中。 您可以將“.user.ini”放在任何子目錄中,以便僅影響該目錄。

.user.ini :

max_input_vars = 3000

在 Centos7 和 PHP 5.6.33 上測試。

php_value max_input_vars 6000

“將此行放在您網站的 .htaccess 文件中。”

剛剛將菜單項添加到 Wordpress 時遇到了同樣的問題。 我在 Ubuntu 18.04、PHP 7.0 上使用 Wordpress 4.9.9。 我只是取消了以下行的注釋並將其在/etc/php/7.0/apache2/php.ini增加到 1500

; How many GET/POST/COOKIE input variables may be accepted<br>
max_input_vars = 1500

然后使用以下內容來實現更改:

sudo apache2ctl configtest  #(if it does not return ok Apache will not start)
sudo service apache2 reload

希望有幫助。

“PHP 消息:PHP 警告:未知:輸入變量超過 1000。要增加限制更改 php.ini 中的 max_input_vars。

這個 php 配置參數 max_input_vars 不僅會影響你的 GET / POST / COOKIES 參數,它還會控制你的任何表單輸入。

要設置或更改其值,請按照以下步驟操作。

1) 通過在您的 php.ini 文件中查看現有設置/值來檢查它使用定位 php.ini 文件

<?php echo getinfo(); ?>

找到以下鍵:加載的配置文件:/etc/php/5.6/fpm/php.ini

2) 在可編輯模式下打開 php.ini 文件並搜索 max_input_vars 這行可能在你現有的默認設置中被注釋,默認值為 1000 ,所以刪除; 取消注釋並使用合適的值對其進行編輯,例如 2500。

3) 保存文件並使用下面的sudo service php5.6-fpm restart PHP sudo service php5.6-fpm restart

同樣,您可以輕松地更新任何其他類似的 PHP 配置。

只是為了補充。 在使用 mod_suphp 的共享服務器上,我遇到了同樣的問題。

聲明 4 個 max_input_vars(包括 suhosin),並沒有解決它,它只是繼續截斷 1000 個變量(默認),並在 .htaccess 上聲明“php_value max_input_vars 6000”拋出錯誤 500。

解決它的是在 .htaccess 上添加以下內容,它將 php.ini 文件遞歸地應用於該路徑

suPHP_ConfigPath /home/myuser/public_html

新的 Cpanels 塊可以查看 .htaccess 文件,或者如果您添加了 .user.ini,您將無法看到它。 但只要稍加修改,您就可以讓它發揮作用。 編輯例如 wp-config.php 並在 URL 欄中用 .htaccess 替換 wp-config.php 現在您可以粘貼值並保存它。 在此處輸入圖片說明

如果你正在使用類似wodby( docker4phpdocker4drupal )或蘭多或試圖找到“為什么php.ini中不起作用”(像我)的答案,這些工具都是用自己的方式來配置傳遞到PHP

https://github.com/wodby/php#php-and-php-fpm-configuration

我試圖設置max_input_vars ,在 wodby+docker-compose 你這樣做

  php:
    image: wodby/drupal-php:$PHP_TAG
    container_name: "${PROJECT_NAME}_php"
    environment:
      PHP_MAX_INPUT_VARS: 9999

是的,將它添加到 php.ini,重新啟動 apache,它應該可以工作。

如果你想用ini_set("max_input_vars",100)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM