5

Ubuntu 上 Apache 2.2.4 下的 PHP 4.4 和 PHP 5.2.3。

我正在运行 Moodle 1.5.3,最近在更新课程时遇到了问题。$_POST 变量为空,但前提是在表单的文本区域中输入了大量文本。如果只输入一个简短的文本,它就可以正常工作。

我已将 post_max_size 从 8M 增加到 200M 并将 memory_limit 增加到 256M 但这没有帮助。我将 LimitRequestFieldSize 和 LimitRequestLine 加倍为 16380,并将 LimitRequestBody 设置为 0,但没有任何改进。

我已经用谷歌搜索了答案,但一直找不到。

Firefox 上的 HTTP 标头显示 3816 的内容大小和正确的数据,所以它只是没有到达 $_POST。

该系统运行良好,直到几周前。唯一的更改是 /etc/hosts 以更正 exim4 电子邮件服务器的 HELO 问题。

我可以在 exim4 未运行的开发机器上复制该问题,所以我认为这只是巧合。

感谢你的协助。

4

5 回答 5

2

我没有足够的知识来真正提供有用的答案,所以以下是一个受过良好教育的猜测(至少我希望如此)。

首先,您应该通过 access_log 或例如通过firebug来调试整个请求。(无论如何都有 Firebug 很好。)对我来说,您的问题听起来像是在两者之间发生了重定向。我给你举个例子:

假设这是您的结构:

/form.php
/directory/index.php

这是你的表格:

<form action="/directory" method="post">
...
</form>

这种情况下的问题是,即使/directory是一个有效的 url,Apache 也会再次将您重定向到/directory/,因此您正在丢失您的有效负载(应该在 中的内容$_POST)。

于 2008-10-23T13:00:28.027 回答
1

表单的enctype是什么?可能是它限制了通过表单发送的数据量。

您可能还想检查传入的原始 $_POST 数据:

file_get_contents('php://input');

确保它们实际上是数据发送。在这里得到这些建议。

于 2008-10-23T11:43:34.500 回答
1

可能不是与帖子的大小有关,而是新行之前的行有多长。如果他们使用 Moodle WYSIWYG 视图,则 html 将被放入一行而没有中断。如果您进入 html 并在每 1000 个字符左右按回车键,它会起作用吗?

于 2008-10-23T15:19:06.717 回答
0

这听起来像是 Apache 或 Apache/PHP 集成问题。如果 $_POST 为空,则表明 http 服务器没有将 POST 信息提供给 PHP。如果我是你,我会调查 Apache 配置。

于 2008-10-23T10:42:18.213 回答
0

这很明显,但是您 /etc/init.d/apache2 restart 了吗?

此外,error_log 文件应显示有关帖子大小是否超过设置限制的一些信息。考虑增加排查问题的详细程度

于 2008-10-23T10:57:31.770 回答