今天在操作php上傳的時候發現了一個問題,就是當php腳步上傳的文件大小超過php.ini中post_max_size的限制的時候頁面不會給出提醒,文件也上傳失敗,這個問題感覺應該算是一個另類,今天跟大家分享一下。
php.ini 配置對php上傳文件大小的影響參數有:
配置項 可能值 功能描述
file_uploads ON 確定服務器上的PHP腳本是否可以接受HTTP文件上傳
memory_limit 8M 設置腳本可以分配的最大內存量,防止失控的腳本獨占服務器內存
upload_max_filesize 2M 限制PHP處理上傳文件的最大值,此值必須小於post_max_size值
post_max_size 8M 限制通過POST方法可以接受的信息最大量
而對應的$_FILES 中error對應得錯誤提示有:
文件上傳時產生的錯誤
0:表示沒有發生任何錯誤,文件上傳成功
1:表示上傳文件的大小超出了再PHP配置文件中upload_max_filesize選項限制的值
2:表示上傳文件大小超出了HTML表單中MAX_FILE_SIZE選項所指定的值
3:表示文件只被部分上傳
4:表示沒有上傳任何文件
由此看出php只能對upload_max_filesize這個配置項的限制做出判斷,而對post_max_size則沒有相應的判斷,這時的頁面其實是一個崩潰的狀態,頁面不會給出任何提示。
對於此問題,現在目前想到的方法是通過ini_get()函數獲取到post_max_size配置值,然后送給前台,通過前台驗證。還有一個是直接在后台驗證也是先用ini_get()獲取post_max_size的值,再與要上傳的文件進行對比,不過這個要先通過ajax獲取到文件的大小。
qq:411200871(艾維艾科技),如果您有好的方法可以相互溝通.