PHP post空,如果文本区域超过100万字符


php post empty if textarea over 1 million characters

我有一个textarea,如果少于100万个字符,它可以正常工作。当$_POST中缺少超过100万字符的字段时(所有其他字段都被发布)。

是什么原因导致的?当搜索所有我看到提到的是没有字符限制,只有帖子大小限制和内存限制。没有显示错误,这些错误设置在2Mb的文本大小。

设法解决了这个问题,这是suhosin限制字符。我需要设置如下内容:

suhosin.request.max_value_length = 100000000
suhosin.post.max_value_length = 100000000

您是否尝试在php.ini文件中增加post_max_size ?

此外,您还可以使用其他方式发布您的数据,例如使用:

//execute an async method
function curl_request_async($url, $params, $type='GET'){
    $post_params = array();
    foreach ($params as $key => &$val) {
        if (is_array($val)) $val = implode(',', $val);
        $post_params[] = $key.'='.urlencode($val);
    }
    $post_string = implode('&', $post_params);
    $parts=parse_url($url);
    $fp = fsockopen($parts['host'],
        (isset($parts['scheme']) && $parts['scheme'] == 'https')? 443 : 80,
        $errno, $errstr, 999999999);
    $out = "$type ".$parts['path'] . (isset($parts['query']) ? '?'.$parts['query'] : '') ." HTTP/1.1'r'n";
    $out.= "Host: ".$parts['host']."'r'n";
    $out.= "Content-Type: application/x-www-form-urlencoded'r'n";
    $out.= "Content-Length: ".strlen($post_string)."'r'n";
    $out.= "Connection: Close'r'n'r'n";
    // Data goes in the request body for a POST request
    if ('POST' == $type && isset($post_string)) $out.= $post_string;
    fwrite($fp, $out);
    fclose($fp);
}

可以这样调用这个函数:

$url = "somefile.php";
$data['mydata'] = "some data some data some data";
curl_request_async( $url, $data, 'POST' );

注意:

禁止在文件"somefile.php"中使用任何基于Session的认证。您可以访问像$_POST['mydata']这样的帖子数据。你也可以通过GET调用这个函数。不知道自己到底在找什么