仅增加一个 PHP 页面的 Max_input_vars 限制
Posted
技术标签:
【中文标题】仅增加一个 PHP 页面的 Max_input_vars 限制【英文标题】:Increase Max_input_vars limit for only one PHP page 【发布时间】:2016-11-28 07:09:05 【问题描述】:有什么办法可以只增加一个 php 页面的 PHP max_input_vars 限制。我正在使用 CSV 上传和提取功能。其中 csv 数据将使用插入查询保存到数据库中。但是当我尝试使用更大的 CSV 数据(例如大约 9000 个条目)时,我收到了这样的错误:
PHP 警告:未知:输入变量超过 1000。增加限制更改 php.ini 中的 max_input_vars。
我知道我们需要更改 php.ini 或 .htaccess 中的限制值,但我不想更改整个项目的限制以维护安全性。那么有没有办法只为这个功能改变它??
【问题讨论】:
如果您使用的是 CSV 格式的文件,为什么不使用LOAD DATA
来导入呢?这比一个巨大的声明要少得多。
【参考方案1】:
没有办法做到这一点。您必须在php.ini
文件中更改它,因为即使ini_set
也无法更改它。
max_input_vars
具有PHP_INI_PERDIR
的可更改模式,这意味着它不能使用ini_set
更改(仅在 php.ini、.htaccess 或 httpd.conf 中)
(Source)
但是,您可以通过将此行添加到您的 .htaccess
来临时更改该设置:
php_value max_input_vars 3000
(Source)
【讨论】:
马丁 S.:好的。实际上我对这个输入变量有点困惑。当多选下拉列表包含近 9000 个条目时,我收到此错误。但是在 Post 上,我们将选择选项值作为数组传递给一个输入元素,对吗?这是选择元素的名称。您能否描述一下这个 max_input_vars 限制的用途?是可以通过 POST 传递的输入元素的数量吗?如果是这样,为什么我的选择下拉菜单显示该错误?? @USER5615 它是每个超全局允许的变量数量。如果您不向我显示您的代码,我不知道为什么会出现该错误,但我猜您通过 POST 传递了太多变量。 一个大的多选导致这个问题的原因是每个选择的选项都作为fieldname[]=value
传递。请注意,这看起来几乎像一个单独的表单域。在解析数据并将其加载到 vars 中时,这会被视为一个数组,但它仍将每个分配都计为一个“输入 var”。以上是关于仅增加一个 PHP 页面的 Max_input_vars 限制的主要内容,如果未能解决你的问题,请参考以下文章