簡體   English   中英

Errno :: EACCES:權限被拒絕@ dir_s_mkdir-/解壓縮時上傳

[英]Errno::EACCES: Permission denied @ dir_s_mkdir - /uploads while unzipping

我正在解壓縮已經使用carrierwave上傳的文件,並且正在使用控制台在本地主機上運行此代碼。 我的上載文件夾中已經有文件,我需要將其解壓縮以讀取內容。

Zip::File.open(Rails.root.to_s + "/public" + self.submission.file_path.to_s) { |zip_file|
  puts zip_file.inspect
  zip_file.each { |file|
    file_path = File.join("solution", file.name)
    FileUtils.mkdir_p(File.dirname(Rails.root + "/public" + self.submission.file_path.to_s))
    zip_file.extract(file, file_path) unless File.exist?(file_path)
  }
}

並給我錯誤

Errno::EACCES: Permission denied @ dir_s_mkdir - /uploads
    from /Users/Linux/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/fileutils.rb:252:in `mkdir'
    from /Users/Linux/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/fileutils.rb:252:in `fu_mkdir'
    from /Users/Linux/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/fileutils.rb:226:in `block (2 levels) in mkdir_p'
    from /Users/Linux/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/fileutils.rb:224:in `reverse_each'
    from /Users/Linux/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/fileutils.rb:224:in `block in mkdir_p'
    from /Users/Linux/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/fileutils.rb:210:in `each'
    from /Users/Linux/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/fileutils.rb:210:in `mkdir_p'
    from /Users/Linux/Documents/rails/recruitment/app/models/candidate.rb:22:in `block (2 levels) in unzip_solution'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/rubyzip-1.1.7/lib/zip/entry_set.rb:42:in `call'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/rubyzip-1.1.7/lib/zip/entry_set.rb:42:in `block in each'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/rubyzip-1.1.7/lib/zip/entry_set.rb:41:in `each'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/rubyzip-1.1.7/lib/zip/entry_set.rb:41:in `each'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/rubyzip-1.1.7/lib/zip/central_directory.rb:182:in `each'
    from /Users/Linux/Documents/rails/recruitment/app/models/candidate.rb:20:in `block in unzip_solution'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/rubyzip-1.1.7/lib/zip/file.rb:99:in `open'
    from /Users/Linux/Documents/rails/recruitment/app/models/candidate.rb:18:in `unzip_solution'
... 2 levels...
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/commands/console.rb:9:in `start'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:68:in `console'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/commands.rb:17:in `<top (required)>'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `require'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `block in require'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `require'
    from /Users/Linux/Documents/rails/recruitment/bin/rails:9:in `<top (required)>'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `block in load'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /Users/Linux/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
    from /Users/Linux/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /Users/Linux/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'

您需要授予訪問系統根用戶所需目錄的權限

sudo chmod 777 -R your_project_directory_to_be_access

您可以使用:

sudo chmod 777 -R /your/project/public/

出於安全原因,請緊記:

chmod 777賦予每個人讀取,寫入和執行的權利,對於大多數問題,這肯定是太多了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM