nginx下ueditor上傳圖片時目錄建立…
阿新 • • 發佈:2019-02-12
以前用的是apache,現在換成了nginx作為web伺服器,在釋出文章時使用ueditor上傳圖片時,老是報錯:上傳目錄建立失敗,一開始以為是目錄許可權的問題,然後找到目錄修改許可權後再上傳,依然提示失敗,把父級目錄的許可權也修改,一直都修改到根目錄了,上傳依然失敗!然後網上看到了這哥們的方法(http://www.share8.com.cn/html/jc/other/20150302/4.html),試了一下,依然無效!這時我懷疑:我修改的目錄根本不是編輯器上傳使用的目錄!
於是我就想著把ueditor的真實上傳路徑提示出來,我進行了如下步驟:
找到了編輯器的上傳處理類 Uploader.class.php,大約110行的位置找到了上傳失敗的提示位置,
將
$this->stateInfo = $this->getStateInfo("ERROR_CREATE_DIR");
註釋掉,
然後加了一句
$this->stateInfo = $dirname;
儲存。
然後使用ueditor上傳,錯誤提示的上傳路徑是:
/usr/local/nginx/html/ueditor/php/upload/image/20150526/
果然不是我現在要上傳的目錄,/usr/local/nginx/html/根本就是以nginx預設目錄,明明我自己配置的有虛擬主機,為什麼上傳的時候會以預設目錄為準呢,百撕不得騎姐,接下來就是一路追蹤這個路徑什麼時候變成了相對/usr/local/nginx/html/了,一路追蹤到:
private function getFilePath()
{
$fullname = $this->fullName;
$rootPath = $_SERVER['DOCUMENT_ROOT'];
if (substr($fullname, 0, 1) != '/') {
$fullname = '/' . $fullname;
}
return $rootPath . $fullname;
}
就在這把相對路徑轉換成的絕對路徑,$_SERVER['DOCUMENT_ROOT']是個關鍵,我列印一下$_SERVER['DOCUMENT_ROOT'],
果然顯示的結果是/usr/local/nginx/html/,好蛋疼的說,我明明在nginx虛擬機器配置的時候配置了root目錄了的啊,於是開啟nginx的配置有開了一遍,果然發現了問題:
location ~ \.php$ {
root html;
#我的其他配置程式碼
}
這裡的root目錄項沒改,nginx配置中的server {}體內有多個root要配置,這個成了漏網之魚。