我有一个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
调用这个函数。不知道自己到底在找什么