[英]Paperclip: Permission denied error
回形针在本地主机上工作正常,但是在我部署的应用程序上,当我尝试更新头像时,它返回以下错误:
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。
此错误是什么意思,我该如何解决?
这似乎是文件权限问题,而不是Ruby on Rails。 尝试在以运行Web服务器的用户身份登录的终端中运行以下命令:
chmod -R +w /rails_apps/website/releases/20150807211111/public
它与部署计算机上的文件夹和文件权限有关,与Rails无关。
你需要的可写性不只是添加到..../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进行部署有助于在代码部署时完全自动化所需的更改。
我很久以前就遇到了同样的问题,以下对我有用:
chmod 755 /rails_apps/website/releases/20150807211111/public
如果您拥有自己的机器:
chmod 777 /rails_apps/website/releases/20150807211111/public
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.