回形针:权限被拒绝错误

时间:2015-08-07 21:33:21

标签: ruby-on-rails ruby permissions imagemagick paperclip

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。

这个错误意味着什么,我该如何解决?

4 个答案:

答案 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