权限被拒绝@ dir_s_mkdir错误

时间:2016-08-22 08:00:21

标签: ruby-on-rails postgresql sqlite heroku

我一直在寻找一段时间,但似乎无法找到答案。

我使用paperclip和postgresql数据库来上传和存储文件。

我得到的错误是:

Errno::EACCES in DocumentsController#create

Permission denied @ dir_s_mkdir - /documents

错误代码具体是指文档控制器中的这一部分:

def create
    @document = current_user.documents.build(documents_params)

    if @document.save
        redirect_to @document
    else
        render 'new'
    end
end

我最近将我的数据库从sqlite切换到postgresql,它在网上运行得非常好(我已经用heroku上传了它),只是没有开发。

此外,我可以编辑和更新已在开发中上传的文档,但无法上传任何文档。

是否有任何配置文件或某些内容需要修改为@ dir_s_mkdir的权限?

1 个答案:

答案 0 :(得分:0)

最后我设法解决了这个问题。

  • 因为我修改了我的数据库以使用 PostgreSQL 和Heroku,我还需要修改我的Document模型,以适应生产和开发环境。

  • 我还必须在 development 中更改文档对象分配给的:url。更新后的:url成为:

    :url => "/system/documents/pdfs/:id/:basename.:extension"
    

以下是更新的document.rb模型(适用于paperclip部分):

if Rails.env.development?
    has_attached_file :pdf, :use_timestamp => false,
                      :url => "/system/documents/pdfs/:id/:basename.:extension",
                      :path => ":rails_root/public/system/documents/pdfs/:id/:basename.:extension"
    validates_attachment_content_type :pdf, :content_type => ["application/pdf","application/vnd.ms-excel",     
         "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
         "application/msword", 
         "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
         "text/plain"]

else
    has_attached_file :pdf, :use_timestamp => false
    validates_attachment_content_type :pdf, :content_type => ["application/pdf","application/vnd.ms-excel",     
         "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
         "application/msword", 
         "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
         "text/plain"]
end

我提到的许多答案都说要使用:

sudo chown -R username app_path
/* or */
chmod -R 777 PATH_TO_APP/uploads 
/* or */
chmod -R 777 PATH_TO_APP/tmp

虽然更改文件/文件夹的所有权不是一个好选择,因为它将每个文件设置为可执行,可读和任何人都可写。