各位好,
我在ubuntu上安裝了apach2,
接著到 /etc/apache2/mods-available/mime.conf
把AddHandler cgi-script .cgi 加入
我不知道我的cgi檔案要放在哪??
大部份都說會產生在/var/www/cgi-bin
但我的沒有cgi-bin, 到是在有個資料夾 -> /usr/ilb/cgi-bin
因為我把我的cgi程式放到任何一個資料夾下,如/var/www or /usr/lib/cgi-bin
都會顯示錯誤,如下
『Forbidden
You don't have permission to access /test.cgi on this server.
Apache/2.2.22 (Ubuntu) Server at 192.168.0.21 Port 80』
但如在os上下指令 ./test.cgi 是可以執行的。
我試過開啟192.168.0.21/1.cgi 2.cgi 等等
只要是cgi結尾的檔都會這樣,即使沒有這個檔案!!
請各位大家指教
這是 apache 安裝好以後的 default 設定:
<pre class="c" name="code">
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
意思是建立一個別名, 將 /cgi-bin/ 指到 /usr/lib/cgi-bin/
換句話說, 你如果有一個 cgi 放在 /usr/lib/cgi-bin/hi.cgi
那麼你要這樣子去存取: http://server.ip/cgi-bin/hi.cgi
如果你希望在 cgi-bin 以外的地方執行 cgi, 有兩件事要做
感謝您快速的回覆,
以下幾個問題,再次請教您:
2.為什麼我執行cgi程式行是顯示無權限,而不是找不到這個檔案??
謝謝
看一下httpd是用哪個user在跑,然後把程式的owner改成那個user看看。
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
這行須要去哪設定?
ans: 預設就有了, 在 /etc/apache2/sites-available/default
為什麼我執行cgi程式行是顯示無權限,而不是找不到這個檔案??
ans: 你options裡沒有這個: +ExecCGI, 所以 apache 光是看到 .cgi 就說你沒有權限先擋下來了, 如果這個目錄允許你執行 cgi, apache 才會去檢查檔案是否存在
如果你覺得網址裡有個 cgi-bin 可以接受, 那你就直接丟 /usr/lib/cgi-bin/
然後由 http://server.ip/cgi-bin/ 去存取就好了, 什麼設定都不用動
weiclin,
我已可以在http://server.ip/cgi-bin/ 存取了 非常謝謝你!!
但有另一個問題,在/var/www 下 還是無法存取 cgi程式,
謝謝
加在 mime.conf 是 ok 的~
你現在要做的, 有看到 <Directory /var/www> 下面那行 Options 吧?
在最後面加上 +ExecCGI 這個項目, 就像底下的 cgi-bin 的 options 那樣