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

ck_*_*ck_ 5 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
Run Code Online (Sandbox Code Playgroud)

在httpd.conf中

LimitRequestBody
TimeOut
Run Code Online (Sandbox Code Playgroud)

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

Pas*_*TIN 2

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

我之所以建议这样做,是因为这个错误报告,其中有一些注释,例如:

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

在遇到这个问题时,我们也发现这个问题的原因是 suhosin 补丁,默认情况下,该补丁配置为对 cookie、请求、post、get 和会话变量的长度有最大限制。例如,对于 POST 来说,如下所示:

suhosin.post.max_array_深度 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

这些导数需要设置为足够高的数字。例如,在我们的例子中,问题是我们的 POST 数据太长(因为你们很多人似乎都是这种情况)。

因此,我建议检查您的 php.ini 或(根据您的发行版,通常有一个 suhosin.ini)并更正上述值或将它们设置为 0 以禁用它。如果未设置这些导数,则将使用默认值。您需要检查/添加:suhosin.post.max_...suhosin.request.max_...suhosin.get.max_...suhosin.session.max_...suhosin.cookie.max_...

请参阅您的 phpinfo(),其中应列出这些值!

和/或:

[UTC 时间 2008 年 11 月 13 日下午 4:58] keith 在 tdrnetworks dot com

关于 enctype="multipart/form-data" 未填充 $_POST 变量,我发现我的解决方案是禁用 Suhosin 安全模块。

试试吧!

还有一个注释说:

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

我面临着同样的问题。我有一个带有 php 脚本的 html 表单,在其中提交单选按钮或复选框。当我发布表单时,PHP 没有找到任何发布参数。它是随机的,有时有效,有时无效。即使我尝试使用 Get,它有时有效,有时无效。然后我将 ENCTYPE 从大写更改为小写,它开始正常工作

您的表单/页面 HTML 有效吗?也许,在某些罕见的情况下,事实并非如此?


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