回形针:权限被拒绝错误
Paperclip: Permission denied error
Paperclip 在本地主机上运行良好,但在我部署的应用程序上,当我尝试更新头像时 returns 出现以下错误:
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。
这个错误是什么意思,我该如何解决?
这是关于您在部署计算机上的文件夹和文件权限,而不是关于 rails。
这似乎是文件权限的问题,而不是 Rails 上的 Ruby 的问题。尝试在使用 运行 网络服务器的用户登录的终端中 运行 以下命令:
chmod -R +w /rails_apps/website/releases/20150807211111/public
我很久以前遇到过同样的问题,以下对我有用;
chmod 755 /rails_apps/website/releases/20150807211111/public
如果您有自己的机器:
chmod 777 /rails_apps/website/releases/20150807211111/public
您不仅需要为 ..../public
文件夹添加可写性,还需要为 ..../avatars/
下的子文件夹添加可写性。所以这样做:
chmod -R a+w /rails_apps/website/releases/20150807211111/public/system/users/avatars
虽然这通常被认为是不好的做法。您应该将文件夹的所有者或组更改为用户 运行 Web 服务器的所有者或组。然后确保此 user/group 可以写入该文件夹。
类似于:
chown -R www-data:www-data /rails_apps/website/releases/
不过您的需求可能会有所不同。
使用 Capistrano 进行部署有助于在代码部署时完全自动化所需的更改。
Paperclip 在本地主机上运行良好,但在我部署的应用程序上,当我尝试更新头像时 returns 出现以下错误:
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。
这个错误是什么意思,我该如何解决?
这是关于您在部署计算机上的文件夹和文件权限,而不是关于 rails。
这似乎是文件权限的问题,而不是 Rails 上的 Ruby 的问题。尝试在使用 运行 网络服务器的用户登录的终端中 运行 以下命令:
chmod -R +w /rails_apps/website/releases/20150807211111/public
我很久以前遇到过同样的问题,以下对我有用;
chmod 755 /rails_apps/website/releases/20150807211111/public
如果您有自己的机器:
chmod 777 /rails_apps/website/releases/20150807211111/public
您不仅需要为 ..../public
文件夹添加可写性,还需要为 ..../avatars/
下的子文件夹添加可写性。所以这样做:
chmod -R a+w /rails_apps/website/releases/20150807211111/public/system/users/avatars
虽然这通常被认为是不好的做法。您应该将文件夹的所有者或组更改为用户 运行 Web 服务器的所有者或组。然后确保此 user/group 可以写入该文件夹。
类似于:
chown -R www-data:www-data /rails_apps/website/releases/
不过您的需求可能会有所不同。
使用 Capistrano 进行部署有助于在代码部署时完全自动化所需的更改。