1. 程式人生 > >nginx下ueditor上傳圖片時目錄建立…

nginx下ueditor上傳圖片時目錄建立…

以前用的是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要配置,這個成了漏網之魚。