PHP上傳檔案一個很奇怪的問題
下面的的form提交頁面
HTML code
upload.php頁面的代碼
PHP code
if($_FILES["spic"]["error"] != 0) { switch($_FILES["spic"]["error"]) { case 1: echo "上傳的檔案超過了 php.ini 中 upload_max_filesize 選項限制的值。 "; break; case 2: echo "上傳檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。 "; break; case 3: echo "檔案只有部分被上傳。 "; break; case 4: echo "沒有檔案被上傳。 "; break; default: echo "未知錯誤"; } }else { echo "沒有發生錯誤"; }
我在form表單裡邊有限制最大的尺寸 MAX_FILE_SIZE=1M 如果我上傳word 圖片 如果是超過1M的話會提示的 但是我換了一個大於1M的exe 竟然可以上傳成功
查看了PHP.INI之後更加鬱悶
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = "d:/wamp/tmp"
; Maximum allowed size for uploaded files.
upload_max_filesize =
2M
我沒有修改過設定檔!
設定檔限制最大2M但是我上傳exe的檔案傳了 30M左右的 竟然沒有報錯。
大牛門幫忙看看什麼問題
------解決方案--------------------
遇到問題,首先開啟error_reporting(E_ALL),然後對症下藥
------解決方案--------------------
你表單裡隱藏欄位的值沒有加入判斷,怎麼會起效?
既然你php.ini中設定了上傳的最大大小。應該會生效。檢查重啟了伺服器沒有。
------解決方案--------------------
PHP code
if (isset($_POST['sub'] ){} else { echo '檔案過大或者,其他未知錯誤!';}//如果小於1M,echo $_POST['sub'] 會顯示upload;,但是如果大於,echo $_POST['sub'] 就會顯示空;
------解決方案--------------------
對,應該用樓上的方法,判斷 sub 表單按鈕是否被點擊提交來判斷檔案上傳
然而另一方面,我調試的時候上傳個1.73MB的exe檔案是可以正常上傳的,估計是配置問題,而不是代碼存在問題