2014-04-01 23 views
2

Carrierwave是工作完美,讓我感動的目錄了大衆(出於安全原因)和我得到這個錯誤,當我嘗試上傳的圖片:Carrierwave:權限被拒絕的本地圖片

Errno::EACCES in PostsController#create 
Permission denied - /home/starkers/Desktop/carrierwave3/public/uploads 

我ve chown -R 777 carrierwave3它仍然給我錯誤。注意我已經把目錄放回公開,它仍然給我這個!我重新啓動了服務器。不工作。我已經運行sudo chown -R root carrierwave3仍然存在此權限錯誤!瘋!

我正在運行Ubuntu Saucy Salamander。

+0

什麼是犯規錯誤。這是瘋了! – Starkers

+0

您是否檢出http://stackoverflow.com/questions/9749451/rails-errnoeacces-permission-denied-when-uploading-avatar-for-user和http://blog.pardner.com/2012/01/rails -3-1-carrierwave-s3-heroku /? –

回答

2

正確的傢伙這是一個非常奇怪的錯誤,在任何人遇到這種情況。這似乎是通過使用我的上傳器的filename方法而產生的。這裏是我的方法:

def filename 
    "#{SecureRandom.base64}" 
end 

這將導致一個無效的文件名(沒有擴展名),但是,這方面的一個不可預見的影響是,目錄中上傳文件夾中(在我的情況public)被設置爲只讀。這麼奇怪。肯定是一個錯誤。

我的解決方案是刪除整個公用文件夾,註釋掉文件名功能,重新創建公用文件夾並通過應用程序上傳另一個圖像。再次工作。另外,如果我的文件有適當的名稱:

def filename 
    "#{SecureRandom.base64}.gif" 
end 

它工作正常。只是一個非常奇怪的錯誤。