<< 本 | ホーム | 本 >>

rhtml

jessie に更新したら libapach2-mod-ruby がなくなっていて、*.rhtml なファイルがそのまま表示されて困った。ERB で処理できるらしいということでここを参考に対処。

参考にしたサイトから erb.cgi をダウンロードして /usr/lib/cgi-bin に配置してデバッグ用のコードを消すなど以下のように編集。


require 'erb'

print "Content-Type: text/html\n\n"

begin
  
  path = nil
  if (ENV['PATH_TRANSLATED'])
    path = ENV['PATH_TRANSLATED']

  else
    file_path = ENV['REDIRECT_URL'].include?(File.basename(__FILE__)) ? ENV['SCRIPT_URL'] : ENV['REDIRECT_URL']
    path = File.expand_path(ENV['DOCUMENT_ROOT'] + '/' + file_path)
    raise "Attempt to access invalid path: #{path}" unless path.index(ENV['DOCUMENT_ROOT']) == 0
  end

  Dir::chdir(File::dirname(path))
  erb = File.open(path) { |f| ERB.new(f.read) }
  print erb.result(binding)
  
rescue Exception
  
  # error message
  print "<h1>Script Error</h1>"
  print "<pre>#{ $! }</pre>"

end

/etc/apache2/mods-enabled/mime.conf に以下を追加。


AddHandler rubypage .rhtml

a2enmod actions して /etc/apache2/mods-enabled/actions.conf に以下を追加。


Action rubypage /cgi-bin/erb.cgi

あとはapacheを再起動すればいけるはず。

タグ :



コメント追加 トラックバック送信