【问题标题】:Paperclip: Permission denied error回形针:权限被拒绝错误
【发布时间】:2015-08-07 21:33:20
【问题描述】:

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。

这个错误是什么意思,我该如何解决?

【问题讨论】:

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


    【解决方案1】:

    这似乎是文件权限的问题,而不是 Ruby on Rails 的问题。尝试在以运行 Web 服务器的用户登录的终端中运行以下命令:

    chmod -R +w /rails_apps/website/releases/20150807211111/public
    

    【讨论】:

    • 你知道这个答案和“chmod 777 /rails_apps ...”的答案有什么区别吗?
    • +w的意思是增加写权限,会给用户和组写权限,相当于775。777会给本机所有用户写权限,比较危险为了安全。
    • @JoeMorano 这里有一个很好的教程:ryanstutorials.net/linuxtutorial/permissions.php
    • 我尝试了chmod -R +wchmod 755chmod 777,但每次都遇到完全相同的错误。
    • @JoeMorano 你可以试试chmod -R 777,以防你在public中有子目录。
    【解决方案2】:

    这与您在部署机器上的文件夹和文件权限有关,而不是与 rails 有关。

    【讨论】:

    • 您是指我用来将应用部署到互联网的机器?
    • 对,此文件夹或任何其他文件夹的权限限制了您用于部署的任何用户对其的写入。
    • 您知道如何更改权限吗?
    • 您应该阅读“chmod”命令。我可能应该将此答案作为评论。我建议你谷歌一步一步的部署说明。
    【解决方案3】:

    您不仅需要将可写性添加到..../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 进行部署有助于在代码部署时完全自动化所需的更改。

    【讨论】:

      【解决方案4】:

      我很久以前就遇到过同样的问题,以下对我有用;

      chmod 755 /rails_apps/website/releases/20150807211111/public

      如果您有自己的机器:

      chmod 777 /rails_apps/website/releases/20150807211111/public

      【讨论】:

      • 你知道这个答案和'chmod -R +w /rails_apps ...'的答案有什么区别吗?
      • 777 确保所有者、组和用户设置了“rwx”,并且没有更多和 +w:添加写入权限 -R:递归更改文件和目录
      • 我尝试了这两个命令,但每次都得到完全相同的错误。
      • 你只需要让你的所有目录都可用于 rwx。上面提到的是chmod -R 777
      猜你喜欢
      • 2015-06-12
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      相关资源
      最近更新 更多