首页 > 解决方案 > 如何永久增加 max_input_vars?php.ini 方法会定期被覆盖

问题描述

我管理一个 VPS,我想在其中增加max_input_vars托管在 VPS 上的一个 WordPress 网站。为此,我前往/var/www/vhosts/system/example.com/etc/并在随附的文件中输入以下内容php.ini

max_input_vars =4000

虽然这有效,但该文件会定期被覆盖,因此我会丢失我的修改。

有没有替代方法来实现这种修改,而不用担心php.ini被自动覆盖?

我尝试了以下方法,但都导致网站脱机:

.htaccess

php_value max_input_vars 4000

wp-配置

@ini_set( 'max_input_vars' , 4000 );

更新:2020 年 9 月 1 日

我也尝试过输入php_admin_flag max_input_vars On文件/etc/apache2/apache2.conf,然后输入max_input_vars =4000文件/var/www/vhosts/system/example.com/etc/php.ini

不幸的是,max_input_vars =4000仍然会被重置默认值 1000 覆盖。此外,这种方法会产生以下通知;服务器内:

在此处输入图像描述

我可以在这里做错什么吗?

标签: phpdebianvpsplesk

解决方案


所以,max_input_varsPHP_INI_PERDIR意味着它可以在 php.ini、.htaccess、httpd.conf 或 .user.ini 中设置(自 PHP 5.3 起)。

PHP 只有一种防止本地指令覆盖的解决方案(本地指令覆盖 PHP 中的主指令,因此它自下而上冒泡),即在指令上设置一个admin_flag,从而防止主配置在本地被覆盖。要做到这一点,这将取决于您使用的 PHP SAPI。

mod_php (Apache httpd)

您可以php_admin_flag在您的 httpd 配置中使用您的 apache 配置(即虚拟主机文件或 httpd.conf)进行设置php_admin_flag max_input_vars On。这将防止 php.ini 中加载的值被 .htaccess 或ini_set().

php-fpm (fastcgi)

您可以php_admin_flag使用语法在 php-fpm 配置或单个池配置中设置php_admin_flag[max_input_vars] = On.

注意

但是,在继续之前,请注意不要将此指令设置得太高,因为它可能会导致 PHP 中的已知拒绝服务攻击。从手册...

使用该指令可以降低使用哈希冲突的拒绝服务攻击的可能性。如果输入变量多于该指令指定的数量,则会发出E_WARNING,并从请求中截断更多输入变量。


推荐阅读