已设置内容类型和内容长度,但$ _POST数组为空

时间:2012-01-11 05:35:26

标签: php linux

我在运行php 5.3.8的本地服务器和带有eAccelerator,Xdebug和Suhosin的Zend Engine 2.3.0上安装了相当新的apache / php。除了一个重要的帖子问题,一切都很好。每次将表单作为帖子提交时,都不会有数据通过。 (print_r($ _ POST)返回一个空行数组。)

我还在$ _SERVER上做了一个print_r,并注意到content_type已正确设置为application / x-www-form-urlencoded并且content_length已正确设置,甚至根据输入的信息长度而有所不同。提交前的表格。

据说所有以下代码都没有返回任何内容:

var_dump($_POST);

$data = file_get_contents('php://input');
var_dump($data);

阅读了我可以通过其他问题找到的所有内容,我已经检查了各种php.ini设置并查看了phpinfo()列表,并且所有与帖子相关的变量似乎都设置得正确且超过了足够大以至于非常大至少处理一个带有两个文本输入框的表单......

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果没有进一步的信息,我只能提供一些非常通用的说明:

  1. 验证表单元素所具有的actionmethod属性的值,或者确保它符合您的预期。 (方法和操作属性都很重要。)
  2. 确保您已连接到Web服务器,并且没有应用程序防火墙正在过滤POST请求,包括硬件和软件。
  3. 确保通过本地网络或计算机上的wireshark拦截您的请求。使用wireshark和其他工具来追踪请求的去向并确保它到达。
  4. 登录您的服务器并查看其日志。确保您收到请求。如果没有,请检查本地应用程序防火墙或其他一些工具(如mod_security)拦截请求。如果是这样,请从服务器的角度查看预处理和后处理的请求。确保目标与步骤1中action的值一致。
  5. 随意猜猜或询问您(或某个)系统管理员。