Paperclip在localhost上工作正常,但在我部署的应用程序中,当我尝试更新头像时,它会返回以下错误:
Errno::EACCES in UsersController#update
Permission denied - /rails_apps/website/releases/20150807211111/public/system/users/avatars/000/000/562
这是我的用户控制器中被挑选出来的一行:
if @user.update_attributes(user_params)
这是我的用户模型:
has_attached_file :avatar, :styles => { :full => "400x720" }, :processors => [:cropper]
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
我的服务器使用Ubuntu 10.04.4 LTS。
这个错误意味着什么,我该如何解决?
答案 0 :(得分:2)
这似乎是文件权限的问题,而不是Ruby on Rails。尝试在运行Web服务器的用户登录的终端中运行以下命令:
chmod -R +w /rails_apps/website/releases/20150807211111/public
答案 1 :(得分:0)
这是关于部署计算机上的文件夹和文件权限,而不是关于rails。
答案 2 :(得分:0)
您需要将可写性不仅添加到..../public
文件夹,还要专门添加到..../avatars/
下的子文件夹。所以这样做:
chmod -R a+w /rails_apps/website/releases/20150807211111/public/system/users/avatars
这通常被认为是不好的做法。您应该将文件夹的所有者或组更改为运行Web服务器的用户的所有者或组。然后确保该用户/组可以写入该文件夹。
类似的东西:
chown -R www-data:www-data /rails_apps/website/releases/
您的需求可能会有所不同。
使用Capistrano进行部署有助于在代码部署时完全自动化所需的更改。
答案 3 :(得分:-1)
我很久以前遇到了同样的问题,以下内容适用于我;
chmod 755 /rails_apps/website/releases/20150807211111/public
如果你有自己的机器:
chmod 777 /rails_apps/website/releases/20150807211111/public