2014-01-10 26 views
1

PHP對POST數據(總體數據大小限制以及字段限制)有幾個限制。當我遇到這些限制時,我目前沒有任何警告 - 除了缺少數據。PHP:檢查丟失/裁剪的POST數據

有沒有辦法來檢查PHP是否遇到了這些限制之一?

回答

1

您需要更改錯誤報告級別,以便顯示警告,因爲在達到POST大小時會輸出警告。

error_reporting(E_ALL); 

設定使用error_reporting到E_ALL包括E_WARNING,但你可以只使用E_WARNING如果你不想被報道的其他錯誤。

如果您想要輸出錯誤,請確保您有display_errors設置爲on1。如果你不這樣做,你可以在本地使用display_errors(1);

無論你是否顯示錯誤,它們仍會被記錄到你的PHP錯誤日誌文件中。

1

您可以檢查或php.ini.htaccess變化值:

有這個文件也是另一個限制:

您可以控制這些使用的.htaccess,就像這樣:

error_reporting(E_ALL); 

php_value post_max_size 100M 

而且使用檢查是否有錯誤,在處理過程

+0

避免它的好方法,但OP會問他如何捕捉警告,而不是詢問如何增加大小以防止出現錯誤。 – Ryan

+0

@Stanyer這就是說,在我看來,OP沒有意識到你可以增加限制。很好的答案。 – Jeemusu

0

您的應用程序可以檢查這些設置。爲此,請使用ini_get()

例如:

ini_get('post_max_size'); // in bytes 
0

請注意,這是一個發展和部署的問題,因爲你的PHP腳本(甚至整個Apache服務器)可以被反向代理,反正可以有任意數量的中間代理對請求有限制並因此將其截斷。

因此,第一步是確保發佈請求大小的PHP限制在處理請求的服務器軟件鏈中最少。

然後,我建議您閱讀this question(以及答案和評論),以瞭解您可以做什麼以及平臺爲您提供什麼,特別是檢測此類錯誤有多麻煩且有點不可靠。無論如何,我認爲不應該讓用戶反饋關於輸入數據的反饋:畢竟,每件事都有一個限制(想想數據庫的列大小,磁盤空間等等),適當的大小更重要比發出錯誤消息。至少,我甚至不記得上次服務抱怨請求大小。如果您對文件上傳限制特別感興趣,相反,這是完全不同的事情,因爲在PHP腳本中,如果用戶達到了給定的限制,則更容易知道。