【问题标题】:$_POST in php is empty when data is too big当数据太大时,php 中的 $_POST 为空
【发布时间】:2012-11-19 03:12:34
【问题描述】:

我们使用 php 开发了一个 Web 应用程序。在客户将其迁移到 VMware 之前,它一直运行良好。因为在 POST 中发送的一些表单没有被发送,我们发现只有在发送超过一定数量的数据时才会发生这种情况。 只有在 VMware 环境中运行应用程序时才会发生这种情况。

请帮忙!!

更新: 在 apache_error.log 文件中,我发现了以下错误: PHP 警告:未知:输入变量超过 1000。增加限制更改 php.ini 中的 max_input_vars。在第 0 行的未知中,引用者:.....

这个参数只能在 php.ini-development 和 php.ini-production 中找到,它被注释了,所以我删除了 ;;并增加了值并在 php.ini 文件中添加了值,但正如我在 phpinfo() 中看到的那样,这一切都被忽略了 有什么建议吗?

PHP 版本 5.3.13

【问题讨论】:

  • 多大才算太大? VMware 是在运行 Web 应用程序,还是只是托管运行 Web 应用程序的虚拟机?
  • 如果内存不够,就是这样。检查error.log,我们不能。还有post_max_size 在 php.ini 等中。
  • 我发现在 apache_error.log 中有一个错误:“输入变量超过 1000 所以需要更改 php.ini 中的 max_input_vars。好吧 - 我做了,但它被评论了,所以这就是意思被忽略了?它也不存在于生产和开发中的 php.ini 中,那么正确的位置在哪里?
  • @coder543 - 它是主机。有什么建议我应该更改哪个配置?

标签: php post


【解决方案1】:

在 php.ini 中注释的max_input_vars 很可能意味着它正在使用默认值。您可以通过取消注释来覆盖它。在这种情况下,评论并不意味着忽略。

post_max_size 参数也应该可以在您的 php.ini 文件中进行配置。确保在测试之前和更改该文件中的任何内容之后重新启动 apache。在您的 php.ini 文件中,找到显示

的行
post_max_size = 2M

(或任何最大尺寸)

并将其增加到 8M 或类似的东西。

您的 php.ini 文件可能位于也可能不在

/etc/php5/apache2/php.ini

它确实因发行版而异。

【讨论】:

    【解决方案2】:

    将php.ini中post_max_size的值改为post_max_size = 2M

    或者通过 .htaccesss 添加这个

    php post_max_size = 2M
    

    【讨论】:

      【解决方案3】:

      通过增加 php.ini 文件中 max_input_vars 的值来解决它。 这值得知道,其中一个症状是 POST 数组为空...

      【讨论】:

        【解决方案4】:

        我的猜测是你有一个配置来处理一个分发

        post_max_size
        

        高于标准 2MB 并且您发送的“超过”2MB。

        您可以使用自定义 php.ini 或自定义“php_value post_max_size 8MB”覆盖此设置,具体取决于服务器配置。

        【讨论】:

        • 你在哪里找到这个参数?我在 php.ini 文件中找不到它。是服务器端吗?
        • 您可以在服务器的 php.ini 中找到它,也可以在您的站点上定义的自定义 php.ini 文件中找到它(如果 apache 配置支持它),或者您会找到它在您的站点/文件夹的 Apache 配置、虚拟主机配置或自定义 HTAccess 文件中(同样很大程度上取决于您的托管服务提供商的配置)
        猜你喜欢
        • 2011-02-13
        • 2013-06-04
        • 2011-05-02
        • 2016-06-20
        • 1970-01-01
        • 2012-09-07
        • 1970-01-01
        • 2012-12-21
        • 2012-12-13
        相关资源
        最近更新 更多