織夢(DEDECMS)后臺(tái)無法上傳提片,提示上傳失敗,令人懊惱。而織夢或其它程序使圖片上傳失敗的原因無非就那么幾種可能,我們首先分析下上傳失敗的可能性,排除并解決后臺(tái)圖片不能上傳的問題。
筆者昨天對LINUX服務(wù)器做了安全設(shè)置,導(dǎo)致圖片不能上傳,本以為是程序漏洞導(dǎo)致,最后發(fā)現(xiàn)所有網(wǎng)站都無法上傳圖片,則肯定了和程序漏洞的關(guān)系可能比較小。
其實(shí),圖片不能上傳成功的原因大概有以下幾種:
1、目錄上傳權(quán)限不夠。
2、程序本身漏洞導(dǎo)致,或程序不完整導(dǎo)致。
3、操作系統(tǒng)問題。
檢測目錄權(quán)限
當(dāng) 提示圖片上傳失敗的時(shí)候,我首先檢測的是文件權(quán)限是否足夠。經(jīng)過檢測,文件夾的權(quán)限是755表示已經(jīng)足夠,并且已經(jīng)重新創(chuàng)建了文件夾并賦予最高權(quán)限,依然 沒有解決該問題,接著檢測用戶組權(quán)限是否足夠,通過檢測也沒有發(fā)現(xiàn)任何的問題,因此文件夾權(quán)限導(dǎo)致圖片不能正常上傳的可能性被排除。
網(wǎng)站程序完整性
接著檢測網(wǎng)站程序的完整性,發(fā)現(xiàn)十多個(gè)網(wǎng)站都不能正常上傳圖片,于是排除了網(wǎng)站程序完整性導(dǎo)致圖片上傳失敗的可能性。
操作系統(tǒng)問題
于是檢測 WEB NGINX 服務(wù)器,將圖片上傳文件夾的可執(zhí)行權(quán)限開放,但任然不能成功上傳圖片。此時(shí),忽然想起了之前配置過 php.ini 配置文 檔,將 open_basedir 配置成了網(wǎng)站程序所在根目錄 /htdocs,于是將該行代碼注釋掉,之后便成功的上傳了圖片,問題被解決掉。但是, 這樣做放棄了安全性,有些舍不得。
通過以下方法,不僅讓安全性提高,也解決了圖片上傳失敗的問題:
php.ini 中的open_basedir 表示:php程序執(zhí)行限制在了指定的目錄中,這樣可以限制入侵者繼續(xù)提權(quán)到操作系統(tǒng),安全性有更一步的保障。其 中 upload_tmp_dir 表示的是文件上傳臨時(shí)目錄,如果設(shè)置了 open_basedir 參數(shù),那么 upload_tmp_dir 必須 配置,否則文件上傳將不能成功。
總結(jié):遇到圖片不能上傳,表示相當(dāng)棘手。需要從上傳的圖片類型、圖片的尺寸、文件夾權(quán)限、程序完整性到最后 的系統(tǒng)環(huán)境一一分析,遇到問題不要焦急,相信經(jīng)過透徹的分析與測試,問題總會(huì)被解決掉。本文最終解決方法就有兩個(gè),注釋 open_basedir 該行 代碼就能解決問題,如果配置了 open_basedir 那么需要設(shè)定文件上傳臨時(shí)目錄,最后筆者將 upload_tmp_dir 設(shè)定 為 /tmp 后,圖片就可以成功上傳了!
更多信息請查看IT技術(shù)專欄