DedeCMS 後台上傳圖片時跳出 Upload filetype not allow,明明是合法圖片格式卻被拒絕。經排查發現是核心檔案變數名稱拼寫錯誤導致。
/include/uploadsafe.inc.php 第 45 行定義允許上傳的圖片副檔名陣列,變數名寫成 $imtypes,但後續判斷邏輯引用的是 $imgtypes,導致白名單為空,所有檔案均被攔截。
/include/uploadsafe.inc.php// 錯誤寫法
$imtypes = array('jpg','jpeg','gif','png','bmp');
// 正確寫法
$imgtypes = array('jpg','jpeg','gif','png','bmp');
重新上傳 JPG/PNG/GIF 圖片,應可正常完成。若仍失敗,檢查:
$imgtypes 陣列中(預設不含 webp、svg)php.ini 的 upload_max_filesize、post_max_size 是否足夠/uploads/ 寫入權限(Linux: chmod 755、擁有者為 www-data)$imgtypes = array('jpg','jpeg','gif','png','bmp','webp','svg');
同步修改前端編輯器(如 CKEditor、UEditor)的允許上傳格式設定。
grep -rn "Upload filetype not allow" /path/to/dedecms/
可快速定位所有相關判斷邏輯,避免漏改。
提醒:DedeCMS 官方已停止更新,存在多處安全漏洞。生產環境建議遷移至現代 CMS(如 Laravel、ThinkPHP、WordPress 等主動維護框架)。