之前使用盛大雲端服務器,用的是ubuntu裝的apache伺服器, 但網站總是莫名其妙的失去響應,需要重啟apache才可以正常服務,看日誌也沒什麼 異常,也就懶得研究,直接換成nginx。 把wordpress從apache挪到nginx比較容易,源檔案拷到nginx根目錄下,不需要修改代碼,修改下wordpress在nginx下的重寫規則就可以了。 但當我寫文章發圖片時,卻提示我"無法將上傳的檔案移動至" 上傳目錄的錯誤。 今天(2012.12.4增加)又發現這個錯誤也可以用同樣方式解決,nginx上傳圖片出現http error 錯誤 [crit] 22919#0: *600783 open() "/usr/local/nginx/client_body_temp/0000000017" failed (13: Permission denied) 根據自己經驗和網上的資料,總結了如下幾種排錯方式: 1.中文檔案名稱 網上很多網站說是修改上傳檔案名稱為全英文就可以,試了下沒成功。 因為我使用的是最新版中文wordpress,而且我之前使用apache時曾經上傳過中文名的附件。 所以認定此方法行不通,如果你是新版wordpress此方法可以不用理會了。 2.檔案夾許可權 如果對檔案夾沒有可寫入權限是不能上傳的,你可以簡單的設成777許可權,讓所有人都可以寫。 但是為了安全,只要保證檔案夾屬主是可寫的就可以也就是755. ls -l 查看上傳目錄發現屬主已經可寫是755許可權,繼續排查別的。 3.php進程和nginx進程運行使用者不同 因為我的nginx使用quancha這個使用者啟動並執行,也就是nginx.conf 裡user指定的參數。 但是php-fpm的進程用的是www-data使用者啟動並執行。具體看。 ps -ef |grep quancha ps -ef|grep php-fpm
上傳功能使用php程式完成,也就是php-fpm進程的使用者去寫wordpress的上傳目錄。 但是上傳目錄位於nginx的html目錄下且屬主是nginx的運行使用者。 也就是說用www-data去寫quancha使用者的檔案夾,當然寫不了。 解決方案: 1.修改nginx.conf中的user指令為www-data使用者。 2.重啟nginx kill -QUIT `cat /usr/local/nginx/nging.pid`; sudo /usr/local/nginx/nginx 3.修改檔案夾目錄屬性 chown -R www-data:www-data /usr/local/nginx