windows xp下使apache支持cgi,兩種方式:C,perl

一直聽說apache的cgi比php運行要快,c比php快這個是很對的,perl寫的html比較古老。具體有什麼優勢,以後再看。

現在我想要用cgi,怎麼辦?

有兩種方式,用c還是perl,反正現在都不知道,兩種都試試。

我的服務器是apache。我要使用cgi。就要找是否已經裝載了cgi模塊。

找到httpd.conf裏面的

LoadModule cgi_module modules/mod_cgi.so                //一定要加載

然後設置cgi運行目錄,當然可以直接指定一個目錄使其php,cgi都能用,但現在纔開始,純粹點。

ScriptAlias /cgi-bin/ "D:/Apache2.2/cgi-bin/"                             這個一般文件裏有了,自己改下地址

這句話是說在根目錄下的cgi-bin這個目錄就是訪問的D:/Apache2.2/cgi-bin/裏面的文件。

下面設置cgi目錄的權限,能運行的cgi程序的後綴名可以不在這兒設置,在這兒設置就只在這個文件夾下用這幾個後綴名了。重要的是要使這個目錄能運行cgi程序,加入Options +ExecCGI

<Directory "D:/Apache2.2/cgi-bin">
   AllowOverride Options
   Order allow,deny
   Allow from ALL
   Options +ExecCGI
 #  AddHandler cgi-script .cgi .pl .exe
</Directory>

在<IfModule mime_module>裏面加入下面的,所有能運行的文件後綴都放這裏,找着方便。

AddHandler cgi-script .exe .pl .cgi

 

後面就是寫cgi,寫一個cgi要運行,如果是c寫的編譯成exe後,就不需要解析器來解析了,應該可以直接用。但我用ie後發現老是會下載下來,後來發現是迅雷監視了瀏覽器,一出現exe文件就跳出下載框。後來直接編譯成cgi爲後綴的文件了。寫cgi的格式查了下apache手冊,上面說主要是兩個問題,1、最開始要輸入你想顯示的mime類型,這裏一般是html,有時候也可能是一張圖片,第一點很重要沒有這個頁面顯示錯誤;2、顯示格式最好是html格式或者網頁能顯示的格式,寫成html最好,簡單點直接輸出字符串也行,反正前面一點已經告訴瀏覽器輸出的是一個html了,也能輸出了。

用c寫的cgi例子  保存爲a.cgi,放到D:/apache2.2/cgi-bin/裏面:

#include <stdio.h>
int main(){
 printf("content-type:text/html/n/n");
 printf("<html>");
 printf("<head><title>welcome</title></head><body>");
 printf("hello,boy!<br />");
 printf("</body><html>");
}

使用http://localhost/cgi-bin/a.cgi  訪問得到

hello,boy!

c裏面不能在寫html的時候使用換行,只能一行一行的輸出,所以還是很麻煩的。

*******************************************************************************************

使用perl寫cgi

這個和以往的cgi實現方式應該還是有些不一樣,以往的方式是先安裝perl,然後用perl去生成一個apache的模塊,加載到apache中,然後就能用了。現在簡單點實現,由於前面已經加載了cgi模塊(見前面),所以apache能使用cgi的方式來接入perl。不過這裏就需要有個perl解析器了,因爲perl的腳本和c編譯後的不一樣,c編譯後的是應用程序了,但perl的還是腳本。所以在編寫perl的cgi的時候一般會先告訴腳本是使用哪裏的解析器來解析的。這裏就需要裝perl軟件,自己去下一個吧。我的裝在d盤的。我的是#!D:/Perl/bin/perl

其中的perl.exe在D:/Perl/bin/裏面,所以這樣寫。當然還可以寫成#!D:/Perl/bin/perl.exe

兩種方式我都試了,都可以。perl支持mysql,在cmd裏面ppm install DBD::mysql

下面是perl寫的一個腳本保存爲a.pl到d:/apache2.2/cgi-bin/:

#!D:/Perl/bin/perl.exe
print "Content-type:text/html;charset=utf-8/n/n";
print "<html>
<head>
</head>
 <body>
 <font color='red'>hello boy!!</font><br />
 <input type='button' value='按下去。。。' οnclick='alert(/"你按過了!!/")' />
 </body>
<html>";

http://localhost/cgi-bin/a.pl運行結果:

hello boy!!

發現和c寫的區別了吧。這個可以換行寫,不影響顯示。第一次搞cgi就到這裏吧,好不容易一個週末呢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章