php - 如何永久增加 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 覆盖。此外,这种方法会产生以下通知;服务器内:
我可以在这里做错什么吗?
解决方案
所以,max_input_vars
这PHP_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,并从请求中截断更多输入变量。
推荐阅读
- bazel - 如何查询 bazel 以获取扩展名为 .srcjar.zip 的生成文件的完整列表?
- flutter - 设置 Flutter RaisedButton 样式的正确方法是什么?
- typescript - 根据对象中已设置的属性缩小联合类型
- javascript - JSDoc Type 属性作为函数参数无效
- python - 模拟 datetime.datetime.now() 时 Pandas 日期时间失败
- android - Google 登录无法在 android 中运行,但在 ios 中运行
- c# - Linq 用于将数据过滤到具有多个字段的对象中,其中之一是 List
- excel - Excel VBA Rename Filename
- php - Symfony3:Choice Type中键值反转的对应关系
- firebase - 如何在springboot中将文件上传到firebase存储后获取下载url