2015-08-15 32 views
0

我有一個textarea,如果少於一百萬個字符,它可以正常工作。只要有超過100萬個字符在$ _POST(所有其他字段都已發佈)中缺少字段。如果textarea超過一百萬個字符,則PHP發佈爲空

這可能是什麼原因造成的?在搜索我所見過的所有內容時,只有帖子大小限制和內存限制沒有字符限制。沒有錯誤正在顯示,並且這些設置好於2Mb文本大小。

+1

這可能與您的Web服務器設置有關。你使用什麼服務器? – sunny

+0

Apache與nginx代理 – user4287915

+0

我不知道這方面的任何事情,但你應該檢查你的服務器文檔,並尋找像這樣的SO帖子:http://stackoverflow.com/questions/11686288/apaches-limit-to- post-request-size – sunny

回答

1

爲了解決這個問題,它是suhosin限制字符。我需要設置以下內容:

suhosin.request.max_value_length = 100000000 
suhosin.post.max_value_length = 100000000 
+0

是的!我有同樣的問題...解決它。 –

0

您是否嘗試在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"中的任何類型的基於會話的認證。您可以訪問郵政數據,如$_POST['mydata']。您也可以通過GET調用此函數。不知道你在找什麼。

+0

是的,這是遠遠高於郵政大小 – user4287915

+0

請檢查我的更新! – hmd

相關問題