2016-07-11 17 views
0

Ich entzippe meine Datei, die bereits mit carrierwave hochgeladen wurde, und ich verwende diesen Code auf localhost mit Konsole. Die Datei befindet sich bereits in meinem Upload-Ordner und ich muss sie entpacken, um den Inhalt zu lesen.Errno :: EACCES: Berechtigung verweigert @ dir_s_mkdir -/uploads beim Entpacken

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) 
    } 
} 

und mir den Fehler

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' 
+0

Was zeigt 'ls -l uploads'? – niceman

+0

Please 'puts Datei.join Rails.root," public ", self.submission.file_path.to_s' und zeigen Sie uns das Ergebnis der oben genannten. – mudasobwa

+0

@niceman Ich habe chmod -R 777 zu meinem Upload-Ordner hinzugefügt. Sie können es in meinem vorherigen Kommentar sehen. Bdw danke für deine Zeit – thestrongenough

Antwort

0

Sie müssen Berechtigungen erteilen das gewünschte Verzeichnis für das System Root-Benutzer

sudo chmod 777 -R your_project_directory_to_be_access 

In Ihrem Fall zugreifen können Sie:

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

Für securi ty Gründen, nur in Erinnerung:

chmod 777 gibt jeder lesen, schreiben und ausführen Rechte, die für die meisten Probleme definitiv zu viel ist.

Verwandte Themen