Carrierwave工作正常,我将目录移出公众(出于安全原因),当我尝试上传图片时出现此错误:
Errno::EACCES in PostsController#create
Permission denied - /home/starkers/Desktop/carrierwave3/public/uploads
我chown -R 777 carrierwave3
它仍然给我错误。请注意,我已将目录放回公共内容,它仍然给我这个!我重新启动了服务器。不工作。我仍然运行sudo chown -R root carrierwave3
此权限错误!疯!
我正在运行Ubuntu Saucy Salamander。
答案 0 :(得分:2)
正确的家伙这是一个非常奇怪的错误,以防任何人遇到这个。它似乎是通过使用我的上传者的filename
方法产生的。这是我的方法:
def filename
"#{SecureRandom.base64}"
end
这导致文件名无效(没有扩展名),但是,这样做的一个不可预见的效果是uploads文件夹所在的目录(在我的情况下是public
)是只读的。这么奇怪。肯定是个错误。
我的解决方案是删除整个公用文件夹,注释掉文件名功能,重新创建公用文件夹并通过应用程序上传另一个图像。再次工作。另外,如果我的文件有正确的名称:
def filename
"#{SecureRandom.base64}.gif"
end
它运作正常。只是一个非常非常奇怪的错误。