【问题标题】:Increase Max_input_vars limit for only one PHP page仅增加一个 PHP 页面的 Max_input_vars 限制
【发布时间】: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 来导入呢?这比一个巨大的声明要少得多。

标签: php mysql .htaccess csv file-upload


【解决方案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”。
猜你喜欢
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 2018-01-15
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
相关资源
最近更新 更多