textarea偶尔会在$ _POST中丢失但是content_length总是正确的?

时间:2009-07-28 05:21:12

标签: php http-content-length

在运行相当活跃的网站的服务器上弹出一个奇怪的错误。

  • 服务器:Apache / 2.2.3(CentOS)
  • PHP:5.2.6
  • eAccelerator 0.9.5.3

在使用多部分表单时,偶然会在$ _POST

中缺少从textarea发送的数据

我们知道数据已发送,因为content_length显示超过1K的合理大小

正确接收表单中的所有其他输入字段。

它不是特定于浏览器的,而是发生在IE / Firefox / Chrome上。

近99%的时间工作,每100个帖子平均只失1或2次。

在非常罕见的情况下,我们已经能够自己重现它,因此我们知道数据正在发送,而不是由apache / php处理

所有这些设置都经过检查并且合理 在php.ini中:

memory_limit
max_input_time
upload_max_file_size
post_max_filesize
httpd.conf中的

LimitRequestBody
TimeOut

很想听到其他想法可能是什么。 我找不到任何已知的PHP相关错误。

1 个答案:

答案 0 :(得分:2)

不确定这是问题(不是一个容易猜到的问题^^),但是如果您有suhoshin安全补丁/扩展,那么您是否尝试取消激活它?
(我不知道它是否在CentOS上默认激活,但它可能是,考虑到它是在Ubuntu上,这是“不那么重要的企业”)

我建议这是因为this bug report,其中有几个注释,例如:

  

[2007年10月30日上午11:02 UTC] sbauer at   gjl-network dot net

     

在遇到这个问题时,我们也是如此   发现这个问题的原因   是suhosin补丁,是 - 通过   默认 - 配置为具有最大值   限制cookie的长度,   请求,发布,获取和会话变量。   例如。对于POST,这看起来像:

     

suhosin.post.max_array_depth 100   100   suhosin.post.max_array_index_length 64   64 suhosin.post.max_name_length 64   64 suhosin.post.max_totalname_length
  256 256 suhosin.post.max_value_length   65000 65000 suhosin.post.max_vars
  200 200

     

这些衍生品需要设置为a   足够多的数字。例如。在我们的   案例,问题是,我们的POST   数据太长了(因为这似乎是   很多人在这里的情况。)

     

所以我建议检查你的php.ini或   (根据你在那里的分布   通常是suhosin.ini)并且正确   以上值或将它们设置为0到   禁用它。如果那些衍生物是   未设置,将使用默认值。   你需要检查/添加:   suhosin.post.max _....   suhosin.request.max _...   suhosin.get.max _...   suhosin.session.max _...   suhosin.cookie.max _...

     

请参阅您的phpinfo()   应该列出值!

和/或:

  

[2008年11月13日下午4:58 UTC]基思   tdrnetworks dot com

     

关于   enctype =“multipart / form-data”没有   填充$ _POST vars我发现了我的   解决方案是禁用Suhosin   安全模块。

     

快走!

还有一条说明:

  

[2月5日下午6:49 UTC] neal dot pressley   在yahoo dot com

     

我遇到了同样的问题。我曾有一个   用PHP脚本的html表单   提交单选按钮或   复选框。当我发布表单时,PHP   没找到任何帖子参数。   它是随机的,有时是   工作,有些时间没有。甚至我   尝试使用Get,它工作了一段时间   还有一段时间没有。然后我改变了   ENCTYPE从大写到小写   并且它开始完美地工作

您的表单/页面是否有效?也许,在一些罕见的情况下,它不是吗?


也许这会有所帮助......如果没有,我很想知道这个问题的原因!