【问题标题】:Permission denied @ dir_s_mkdir - /listings权限被拒绝@ dir_s_mkdir - /listings
【发布时间】:2017-06-28 06:13:33
【问题描述】:

我不确定我做错了什么。带有 S3 的回形针。

ListingsController#update 中的 Errno::EACCES 权限被拒绝 @ dir_s_mkdir - /listings 提取的源代码(第 44 行附近):

  1. 定义更新
  2. respond_to do |格式|
  3. 如果@listing.update(listing_params)
  4. format.html { redirect_to @listing,注意:'Listing was 46.successfully updated.' }
  5. format.json { 渲染:显示,状态::好的,位置:@listing } 其他 48 个

Listing_controller.rb

<p id="notice"><%= notice %></p>

<div class="row">
  <div class="col-md-6">
    <div class="thumbnail">
      <%= image_tag @listing.image.url %>
    </div>
  </div>
  <div class="col-md-6">
    <h3><%= @listing.name %></h3>
    <p><%= number_to_currency (@listing.price) %></p>
    <p><%= @listing.description %></p>
  </div>
</div>

<%= link_to 'Edit', edit_listing_path(@listing), class: "btn btn-link" %>
<%= link_to 'Back', listings_path, class: "btn btn-link" %>

在模型中,

class Listing < ActiveRecord::Base
  has_attached_file :image, :styles => { :medium => "200x", :thumb =>        "100x100>" }, :default_url => "default.jpg"
  validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end

在视图中,show.html.erb

<p id="notice"><%= notice %></p>

<div class="row">
   <div class="col-md-6">
     <div class="thumbnail">
      <%= image_tag @listing.image.url %>
    </div>
  </div>
  <div class="col-md-6">
    <h3><%= @listing.name %></h3>
    <p><%= number_to_currency (@listing.price) %></p>
    <p><%= @listing.description %></p>
  </div>
</div>

<%= link_to 'Edit', edit_listing_path(@listing), class: "btn btn-link" %>
<%= link_to 'Back', listings_path, class: "btn btn-link" %>

已安装宝石,

source 'https://rubygems.org'
ruby "2.3.3"

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end
gem 'rails', '~> 5.0.1'
gem 'puma', '~> 3.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'bootstrap-sass', '~> 3.3.6'
gem "paperclip", git: "git://github.com/thoughtbot/paperclip.git"
gem 'listen', '~> 3.1.5'
gem 'aws-sdk'

group :production do
  gem 'pg'
  gem 'rails_12factor'
end

group :development, :test do
  gem 'sqlite3'
end

group :doc do
  gem 'sdoc', require: false
end

终端内出错,

Listing Load (5.7ms)  SELECT  "listings".* FROM "listings" WHERE      "listings"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
   (0.1ms)  begin transaction
[paperclip] Trying to link   /var/folders/__/2162ls5577704gd514y0859w0000gp/T/RackMultipart20170210-    36927-1iuewku.jpg to  /var/folders/__/2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1ywsn2q.jpg

[纸夹]试图链接/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1ywsn2q.jpg到/ var /文件夹/ 强> / 2162ls5577704gd514y0859w0000gp / T / c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1t9j57i。 jpg 命令 :: file -b --mime '/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1t9j57i.jpg' 命令 :: identify -format '%wx%h,%[exif:orientation]' '/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1ywsn2q.jpg[0]' 2>/dev/空值 命令 :: identify -format %m '/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1ywsn2q.jpg[0]' 命令::转换 '/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1ywsn2q.jpg[0]' - 自动定向调整大小 “200”“的/ var /文件夹/的 / 2162ls5577704gd514y0859w0000gp /T/73570fb1d3ecfa0dc9a9d5e124c5763420170210-36927-j452kb' [纸夹]试图链接的/ var /文件夹/ 强> / 2162ls5577704gd514y0859w0000gp / T / 73570fb1d3ecfa0dc9a9d5e124 c5763420170210-36927-j452kb到/ var /文件夹/的 / 2162ls5577704gd514y0859w0000gp / T / 9918700e8a5840d631b32dff0efdc32820170210-36927-1j9zu6h 命令 :: identify -format '%wx%h,%[exif:orientation]' '/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1ywsn2q.jpg[0]' 2>/dev/空值 命令 :: identify -format %m '/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1ywsn2q.jpg[0]' 命令 :: convert '/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1ywsn2q.jpg[0]' -auto-orient -resize "100x100>/" '/var/folders/ 2162ls5577704gd514y0859w0000gp/T/73570fb1d3ecfa0dc9a9d5e124c5763420170210-36927-1t64b8q' [纸夹]试图链接的/ var /文件夹/ 强> / 2162ls5577704gd514y0859w0000gp / T / 73570fb1d3ecfa0dc9a9d5e124c5763420170210-36927-1t64b8q到/ var /文件夹/的 / 2162ls5577704gd514y0859w0000gp / T / 5a42e5f066b94471d8d7dd70241f775820170210-36927-1l2vm2j [纸夹]试图链接/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-1ywsn2q.jpg到/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-h40oj7.jpg 命令 :: file -b --mime '/var/folders//2162ls5577704gd514y0859w0000gp/T/c3e768b17c5aa48db8ffbc959904bbaa20170210-36927-h40oj7.jpg' SQL (0.9ms) UPDATE "listings" SET "image_file_name" = ?, "image_file_size" = ?, "image_updated_at" = ?, "updated_at" = ? WHERE "列表"."id" = ? [["image_file_name", "022916_flyMG2.jpg"], ["image_file_size", 12403], ["image_updated_at", 2017-02-10 01:24:57 UTC], ["updated_at", 2017-02-10 01 :24:58 UTC], ["id", 1]] (1.0ms) 回滚事务 在 457 毫秒内完成 500 内部服务器错误(ActiveRecord:8.6 毫秒)

Errno::EACCES (Permission denied @ dir_s_mkdir - /listings):

app/controllers/listings_controller.rb:44:in `block in update'
app/controllers/listings_controller.rb:43:in `update'
  Rendering /Users/chrisdionne/.rvm/gems/ruby-2.3.3/gems/actionpack-  5.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erbwithin rescues/layout
  Rendering /Users/chrisdionne/.rvm/gems/ruby-2.3.3/gems/actionpack- 5.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
  Rendered /Users/chrisdionne/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (7.4ms)
  Rendering /Users/chrisdionne/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
  Rendered /Users/chrisdionne/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.6ms)
  Rendering /Users/chrisdionne/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
  Rendered /Users/chrisdionne/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (3.5ms)
  Rendered /Users/chrisdionne/.rvm/gems/ruby-2.3.3/gems/actionpack-5.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (152.5ms)

【问题讨论】:

  • 权限被拒绝意味着权限被拒绝。检查您是否可以作为您连接的用户在该位置创建目录。我的猜测是您无意中尝试创建根级目录。
  • 我如何检查这个?
  • 找出/listings 目录的指定位置。这通常在 Paperclip 初始化程序中。
  • 这是我的回形针.rb 的初始化程序。我错过了什么吗? # config/initializers/paperclip.rb Paperclip::Attachment.default_options[:url] = ':joeget.s3.amazonaws.com' Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition /:style/:filename'

标签: ruby-on-rails ruby permission-denied


【解决方案1】:

正如@tadman 所说,您正在尝试在应用程序路径之外创建附件。

尝试改变

Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'

类似的东西

Paperclip::Attachment.default_options[:path] = ':rails_root/public/system/:class/:attachment/:id_partition/:style/:filename'

Paperclip::Attachment.default_options[:path] = "#{Rails.root}/public/system/:class/:attachment/:id_partition/:style/:filename"

【讨论】:

  • 非常感谢。你们是救生员。你知道为什么我现在上传时它显示一个损坏的图像吗?
  • 没有更多信息,我认为它与 default_options[:url] 有关,您告诉回形针使用 S3 url,但看起来回形针未配置为将附件保存在云中
  • 这是我图片上的错误。没有路线匹配 [GET] "/images/:joeget.s3.amazonaws.com" Rails.root: /Users/chris/Joeget
  • 基于错误,您没有正确使用S3,如果您只是评论或删除回形针初始化程序怎么办?
  • 当我删除它时,我的图片会在上传后显示,但不是在 s3 上。
猜你喜欢
  • 2015-07-20
  • 2016-03-14
  • 2016-12-28
  • 2016-05-07
  • 1970-01-01
  • 2018-12-13
  • 2016-01-19
  • 2015-12-06
  • 2015-12-18
相关资源
最近更新 更多