zoukankan      html  css  js  c++  java
  • PHP无法获取表单post方式提交的数据问题

    我本地有几个系统是基于phpcmsv9系统二次开发的,突然今天发现自己本地的系统管理员无法登陆后台,提示用户名不能为空,我找到相关文件,进行调试打印了一下post提交的数据  print_r($_POST);die;结果数组为空,我仔仔细细看了一下代码确定代码没有问题,重启了apache问题也还是不能解决,我试着登录其他phpcmsv9二次开发的系统,惊奇的发现也会提示“用户名不能为空”,而线上的系统却能登录,从而得知应该是我本地网站运行环境配置有问题,

    我从网上查了一些资料,有说把php.ini文件中register_global参数改为on的,但是我试过了,没有用,后来搜到一篇文章看完后,

    却有如下发现:

    当前最新的PHP手册中有如下含义的表示:

    根据 PHP 手册叙述归纳的理论
    配置项 post_max_size 和 upload_max_filesize 都可以接受“缩写的字节值”,即可以使用 K,M,G 表示千兆吉。
    另外 post_max_size 应该大于 upload_max_filesize (意思是说不这么设置的话,可能会出现文件大小未超过 upload_max_filesize 却超过 post_max_size 也会导致上传失败)。
    另外当 POST 数据超出 post_max_size 范围后,$_POST 和 $_FILES 将为空。


    手册原文参见 http://www.php.net/manual/zh/ini.core.php#ini.post-max-size

    PHP bug 描述
    1. post_max_size 使用简写法,且值等于或超过 2G 时,application/x-www-form-urlencoded 形式的 POST 数据会被丢失而无法获取。(比如 2G 会出现此问题,但 2147483648 却不会有问题)
    2. upload_max_filesize 使用简写法,且值等于或超过 2G 时,其限制会失效,超过2G的文件仍然可以上传成功。(比如 2048M 会出现此问题,但 2147483648 却不会有问题)
    3. 当上传文件大小超过 2G 时,post_max_size 对 multipart/form-data 的限制会失效,可以通过 $_POST 获取到数据。
    4. 当post_max_size 和 upload_max_filesize 都用完整的 integer 字节数表示,且值大到某个程度时(可能是大于2G吧),上传未超过配置大小的文件也可能失败。

    原来是我的前两天修改php.ini参数设置导致了现在的问题,我把post_max_size改成了4048M,这就和上面的bug问题就吻合了,我改得超过了2G,故而post数据丢失,无法获取,于是我把post_max_size改成了2047M,然后重启了一下apache服务,再测试登录就可以获取了

    O(∩_∩)O哈哈~,今天又有新发现,开心ing

  • 相关阅读:
    网络流24题
    可持久化Treap
    后缀平衡树
    bzoj2561-最小生成树
    poj3164-Command Network
    最小树形图
    hdu2121-Ice_cream’s world II
    线性处理逆元
    bzoj3992-序列统计
    JavaScript 类型转换
  • 原文地址:https://www.cnblogs.com/xcp19870712/p/2805217.html
Copyright © 2011-2022 走看看