Rails 3.获取Errno :: EACCES权限在生产时上传文件时被拒绝

leo*_*nel 10 ruby ruby-on-rails carrierwave

该应用程序在开发中工作正常,但在生产中,当我尝试使用Carrierwave上传文件时,我得到Errno :: EACCES Permission Denied错误.我确定它与权限有关.如何设置允许文件上传的权限?

pdf_uploader.rb

def store_dir
  "#{Rails.root}/uploads/#{model.id}"
end

def cache_dir
  "#{Rails.root}/tmp/uploads/cache/#{model.id}"
end
Run Code Online (Sandbox Code Playgroud)

ale*_*xkv 16

chmod -R 777 PATH_TO_APP/uploads 
chmod -R 777 PATH_TO_APP/tmp 
Run Code Online (Sandbox Code Playgroud)

  • 那不是很危险吗? (10认同)
  • 这是危险的,因为允许所有用户也知道所有内容,所以真正的解决方案是将您的app文件夹的用户和组更改为apache用户和组,大多数情况下是www-data. (6认同)
  • 这样做是不正常的.您将每个文件设置为可执行,可读和任何人都可写. (6认同)
  • 我在`777`上使用`666`.从来没有,永远使用`777`,你应该没事. (4认同)