|

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(solved)Ruby/Webrick/CGI: cgi_runner.rb:47:in `exec': Permission denied ... (Errno::EACCES)

簡単なCGIを使いたくて昔書いたやつから適当にコピペして動かしたら 次のようなエラーメッセージが出て Internal Server Error になった。

2012-02-10 22:45:16] ERROR CGIHandler: /home/user/webrick-test/www/cgi/hello.rb:
/home/user/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/webrick/httpservlet/cgi_runner.rb:47:in `exec': Permission denied - /home/user/webrick-test/www/cgi/hello.rb (Errno::EACCES)
        from /home/user/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/webrick/httpservlet/cgi_runner.rb:47:in `
' [2012-02-10 22:45:16] ERROR CGIHandler: /home/user/webrick-test/www/cgi/hello.rb exit with 1 [2012-02-10 22:45:16] ERROR Premature end of script headers: /home/user/webrick-test/www/cgi/hello.rb localhost.localdomain - - [10/Feb/2012:22:45:16 JST] "GET /cgi/hello.rb HTTP/1.1" 500 354 - -> /cgi/hello.rb

パーミッションがどうとか言われているけど、 WEBrick::HTTPServer.new の引数で :CGIInterpreter を指定したら動いた。


require 'webrick'

document_root = '/home/user/webrick-test/www'

server = WEBrick::HTTPServer.new({
  :DocumentRoot => '/home/user/webrick-test/www',
  :BindAddress => '0.0.0.0',
  :CGIInterpreter => '/usr/bin/ruby', # <= これ
  :Port => 10081
})

['/cgi/hello.rb'].each {|cgi_file|
  server.mount(cgi_file, WEBrick::HTTPServlet::CGIHandler, document_root + cgi_file)
}

['INT', 'TERM'].each {|signal|
  Signal.trap(signal){ server.shutdown }
}

server.start
スポンサーサイト



** ホームに戻る

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。