今天, 遇到這樣一個 linux 共享 WordPress 主機使用者, 網站後台上傳 3M 的檔案失敗, 原因由於 upload_max_filesize 限制所致. 所以做了以下設定:
在網站程式根目錄下, 新增 php.ini, 檔案內容如下:
memory_limit = 64M
upload_max_filesize = 20M
post_max_size = 20M
然後在根目錄下, 建立 info.php 測試頁面. 測試頁面內容如下:

訪問測試頁面, 查詢結果, 如下:

發現設定均已經生效.
再次測試檔案上傳, 仍然失敗, 原因還是 upload_max_filesize 限制所致.
 
在處理問題之前, 我們先了解下 php.ini 中這幾個核心配置的説明:
upload_max_filesize  所上傳檔案的最大大小;
post_max_size       設定 POST 資料所允許的最大大小;
memory_limit       設定了一個指令碼所能申請到的最大內存;
max_execution_time  每個指令碼最大執行時間, 單位秒;
 
一般情況下, 需設定memory_limit  >  post_max_size  >  upload_max_filesize .
php.ini 配置檔案中, 預設 upload_max_filesize = 2M,post_max_size = 8M,memory_limit = 32M,max_execution_time = 30 ;
若你想上傳一個 20M 的檔案, 你必須設定 upload_max_filesize = 20M; 如果 POST 資料超出限制, 那麼 $_POST 和 $_FILES(PHP 全域性變數) 將會為空, 所以需要設定 post_max_size 值大於 upload_max_filesize 的值. 但往往我們只要設定 post_max_size 等於 upload_max_filesize 值即可!
在上傳檔案時, 若超過一定時間, 則會報指令碼執行超過 30 秒的錯誤. 這是 php.ini 配置檔案中 max_execution_time 設定作怪. 其中”0” 表示沒有限制, 但不推薦設定為 0, 可以根據上傳檔案適當調整 max_execution_time 的值.
一般情況, 站羣服務器的 php.ini 配置檔案中的 memory_limit 與 max_execution_time 預設設定不生效的, 你可以通過 php.ini 做相應的調整.
 
在回到上面這個問題上, 客户 php.ini 配置並沒有錯誤, 只是因站羣服務器限制所導致. 這裏只需要站羣服務器的相應設定調整一下即可!(這裏需要聯絡站羣服務器管理員)
如下: 檢視共享 WordPress 主機使用者應用的 PHP 版本, 以此來檢視對應站羣服務器 php.ini 配置檔案路徑. 如下:
訪問測試頁面:

檢視到對應站羣服務器 php.ini 配置檔案的路徑為/opt/alt/php56/etc/php.ini, 編輯該檔案, 修改 upload_max_filesize 與 post_max_size 的值為 20M 即可!
這樣, 使用者的 php.ini 設定就可以生效了. 再次上傳 20M 及以下檔案就不會有相應的限制報錯了.