2010/05/29

post_max_size 不可設定成 2048M

當然,超過 2048M 也不行。

php 的設定值 post_max_size 是設定 POST 可以上傳的最大資料量。通常在處理檔案上傳時會用到此設定。

在官方的說明裡有段貼心的小提醒,告訴使用者如果是使用三十二位元版本的PHP,此設定值不可超過三十二位元有號整數的限制,否則會讓程式出錯。原文如下:
Note: PHP allows shortcuts for bit values, including K (kilo), M (mega) and G (giga). PHP will do the conversions automatically if you use any of these. Be careful not to exceed the 32 bit signed integer limit (if you're using 32bit versions) as it will cause your script to fail.
這段話乍看之下很容易忽略,直到碰上了才知道這裡指的就是 post_max_size 不可設定成 2048M 或超過 2048M 。如果設定成 2048M 或以上, post_max_size 就會等同設定成 0 。造成所有透過 POST 方式傳到程式裡的資料都不見了(用 var_dump($_POST) 去看就會發現空空如也,甚麼都沒有),因此程式就發生錯誤。

PS. 為了這個問題足足查了一天,直到發現 2048M 這個魔術數字之後,才發現原來這種狀況早在 2005-12-07 就有網友回報(連結)過了。

沒有留言:

張貼留言