2010-02-11 52 views
14

我想通過CGI在Apache中使用Ruby。我在我的配置文件如下:在Apache中設置Ruby CGI

DocumentRoot /home/ceriak/ruby 

<Directory /home/ceriak/ruby> 
    Options +ExecCGI 
    AddHandler cgi-script .rb 
</Directory> 

test.rb是包含在第一行,並授權執行#!/usr/bin/ruby/home/ceriak/ruby/下放在testfile的。不過,當我訪問localhost/test.rb時,我得到一個下載窗口並可以獲取源代碼。

有趣的是,當我將相同的腳本放在/usr/lib/cgi-bin/下,並調用localhost/cgi-bin/test.rb時,它的工作方式與假設一致。

(Apache2的在Ubuntu 9.10)。

任何想法?

+3

屬於服務器故障 – 2010-02-12 02:56:41

回答

7

幾項檢查:

  • 是你的文件的可執行?您可以通過執行chmod +x /path/to/file
  • 是否輸出正確的Content-type?
  • 你的頭文件和輸出之間是否有空白換行符?
  • 您是否在設置配置後重啓Apache?

如果你這樣做了,它應該可以正常工作。我有這個作爲我test.rb文件:

#!/usr/bin/env ruby 

puts <<EOS 
Content-type: text/html 

<html><body>hi</body></html> 
EOS 
1

我跑了相同的情況,並能夠通過添加以下行AddHandler後修復:

Require all granted 
1

仔細檢查mod_cgi一樣是啓用;默認優勝美地http.conf已將其禁用。