DEDECMS湧現“Upload filetype not allow”的緣故原由及辦理方法

本人是正在克日進級DEDE5.6今後湧現那個題目的,以下解釋毛病緣故原由息爭決方法。

假如有同窗是按某些同夥用刪除代碼的辦法辦理題目的話,發起您修改此做法,究竟那是有很年夜平安風險的。而DEDE自己的平安隱患比擬多,任何沒有平安的修正戰操縱都邑葬送失落網站的平安。

  1. $imtypes=array("image/pjpeg","image/jpeg","image/gif","image/png","image/xpng","image/wbmp","image/bmp");
  2. if(in_array(strtolower(trim(${$_key.'_type'})),$imtypes))
  3. {
  4. [email protected]($$_key);
  5. if(!is_array($image_dd))
  6. {
  7. exit('Uploadfiletypenotallow!');
  8. }
  9. }

那裡的$$_key,指的是上傳文件的暫時途徑,如“d:/php/temp/aaa.tmp”。

我們能夠看出,那getimagesize($$_key)那個辦法,是正在要求PHP暫時目次的讀與權限,假如d:/php/temp出有讀與權限便會湧現沒法讀與的毛病。

@getimagesize($$_key);返回的值實在是False,而那裡DEDE法式員簡略的應用瞭@屏失落毛病提醒,並出有斟酌到權限題目,形成用戶沒法懂得實正毛病緣故原由是出有目次權限,而沒有是文件范例沒有許可。

一頓茫然。

修正方法以下:

1,正在PHP.ini中增加d:/php/temp的讀寫權限,那一步根本上皆不消操縱。由於那個目次一樣平常皆是可讀寫的,否則任何文件皆沒法上傳;

2,
部分假造主機用戶,大概增加瞭php_admin_value open_basedir
指令,正在那裡,我們請求增加上暫時目次的權限,如:“php_admin_value open_basedir
“E:/wwwroot/;D:/PHP/temp””

然後重啟WebServer,至此,題目辦理。