遇到一個問題:往後台post提交資料時,當超過一定大小,就發現背景post資料為空白,後台收不到post資料。
請問是什麼原因?是不是因為屏蔽了哪個php函數?還是php.ini的某項設定?
php.ini 中 post_max_size = 64M;
回複討論(解決方案)
php 5.3.9 以後還有個資料項目數的限制
php 5.3.9 以後還有個資料項目數的限制
請問是哪個資料項目限制?
post 表單控制項數
post 表單控制項數
是 max_file_uploads 嗎?
你有上?檔案的??
?有一?upload_max_filesize 需要?
你有上?檔案的??
?有一?upload_max_filesize 需要?
upload_max_filesize = 30M
max_file_uploads = 500
post_max_size = 64M;
這個設定按道理是可以滿足一般post資料提交。
是的,但你的??有多大呢?
你post的資料有多大,print_r($_POST); 看看。
你post的資料有多大,print_r($_POST); 看看。
echo print_r($_POST);
輸出結果
Array
(
)
1
很奇怪的輸出。
print_r($_POST);
print_r($_POST);
輸出結果顯示,沒有提交的那個資料過大的post變數。
單獨測試了一下,資料如果超過 64999,就無法正常提交,小於這個資料,後台能收到。
另外,這個資料過大,不影響別的post資料。
print_r($_POST);
列印出空數組,表示你沒有用 post 方式提交
或是你在 php.ini 禁用了 post 提交方式
如果是 post 失敗(資料超出允許範圍)則列印出的是什麼都沒有
print_r($_POST);
列印出空數組,表示你沒有用 post 方式提交
或是你在 php.ini 禁用了 post 提交方式
如果是 post 失敗(資料超出允許範圍)則列印出的是什麼都沒有
好像是被限制了單個post資料的大小,但是,不知道是在php.ini裡面被限制的還是哪裡,網上搜尋的相關條件限制都無法解決這個問題。
你看看 echo file_get_contents('php://input'); 的結果
一般出錯時都有錯誤資訊,你也不去看看
查到原因了,前些天加了 suhosin 的功能,被這個 suhosin 給限制了。現在的問題變成:怎麼配置 suhosin?
suhosin.post.max_value_length 65000 65000
搞定了,在php.ini裡面添加 suhosin 的設定
suhosin.post.max_value_length = 4194304
suhosin.post.max_vars = 20000
suhosin.request.max_vars=2000