PHP并非所有发布数据都在服务器上接收

时间:2013-09-28 17:17:58

标签: php apache

我向运行PHP 5.3.3.7的服务器发布大小约为200KB的数据。 数据实际上是一个具有嵌套属性的JavaScript对象, 在请求中它看起来像这样:myObject[prop1][subprop1][key] = 5

但是,服务器上未收到所有数据。发布数据的最后部分被截断。 max_post_size设置为80MB,因此不应该是问题。我已将请求表单数据与可通过$ _POST访问的数据进行比较,并且缺少大量数据。

PHP版本是5.3.3.7。

导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:3)

你说你使用的是PHP 5.3.3,但也许这不是很正确?从PHP 5.3.9开始,有一个新设置max_input_vars限制了POST(以及GETCOOKIE的数量,依此类推等等)变量可以传递给剧本。

如果我是对的,那么只需在php.iniVirtualHost definition.htaccess中调整它就足够了(ini_setPOST起无效脚本启动后已经修剪过了)

出于安全原因引入了此设置,因此请务必谨慎: http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html

答案 1 :(得分:1)

从客户端尝试使用jQuery并将数据转换为JSON,然后再将POST发送到服务器

   $.ajax({
        method: 'POST',
        url: 'http://someurl.com',
        data: JSON.stringigy(youJsObject),
        success: function(data) {
            // processing data from server
        }
    });