cgi腳本路徑
你是否想使用Python語言創建一個網頁,或者處理用戶從web表單輸入的數據?這些任務可以通過Python CGI(公用網關介面)腳本以及一個Apache web伺服器實現。當用戶請求一個指定URL或者和網頁交互(比如點擊」」提交」按鈕)的時候,CGI腳本就會被web伺服器啟用。CGI腳本調用執行完畢後,它的輸出結果就會被web伺服器用來創建顯示給用戶的網頁。
配置Apache web伺服器,讓其能運行CGI腳本
在這個教程里,我們假設Apache web伺服器已經安裝好,並已運行。這篇教程使用的Apache web伺服器(版本2.2.15,用於CentOS發行版6.5)運行在本地主機(127.0.0.1),並且監聽80埠,如下面的Apache指令指定一樣:
1
2
ServerName 127.0.0.1:80
Listen 80
下面舉例中的HTML文件存放在web伺服器上的/var/www/html目錄下,並通過DocumentRoot指令指定(指定網頁文件所在目錄):
1
DocumentRoot "/var/www/html"
現在嘗試請求URL:
這將返回web伺服器中下面文件的內容:
1
/var/www/html/page1.html
為了啟用CGI腳本,我們必須指定CGI腳本在web伺服器上的位置,需要用到ScriptAlias指令:
1
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
以上指令表明CGI腳本保存在web伺服器的/var/www/cgi-bin目錄,請求URL里包含/cgi-bin/的將會搜索這個目錄下的CGI腳本。
我們必須還要明確CGI腳本在/var/www/cgi-bin目錄下有執行許可權,還要指定CGI腳本的文件擴展名。使用下面的指令:
1
2
Options +ExecCGI
AddHandler cgi-script .py
下面訪問URL:
這將會調用web伺服器中下面所示腳本:
1
/var/www/cgi-bin/myscript-1.py
創建一個CGI腳本
在創建一個Python CGI腳本之前,你需要確認你已經安裝了Python(這通常是默認安裝的,但是安裝版本可能會有所不同)。本篇教程使用的腳本是使用Python版本2.6.6編寫的。你可以通過下面任意一命令(-V和–version參數將顯示所安裝Python的版本號)檢查Python的版本。
Shell
1
2
$ python -V
$ python --version
如果你的Python CGI腳本要用來處理用戶輸入的數據(從一個web輸入表單),那麼你將需要導入Python cgi模塊。這個模塊可以處理用戶通過web輸入表單輸入的數據。你可以在你的腳本中通過下面的語句導入該腳本:
Shell
1
import cgi
你也必須修改Python CGI腳本的執行許可權,以防止web伺服器不能調用。可以通過下面的命令增加執行許可權:
Shell
1
# chmod o+x myscript-1.py
Python CGI例子
涉及到Python CGI腳本的兩個方案將會在下面講述:
使用Python腳本創建一個網頁
讀取並顯示用戶輸入的數據,並且在網頁上顯示結果
注意:Python cgi模塊在方案2中是必需的,因為這涉及到用戶從web表單輸入數據。
例子1 :使用Python腳本創建一個網頁
對於這個方案,我們將通過創建包含一個單一提交按鈕的網頁/var/www/html/page1.html開始。
XHTML
1
2
3
4
5
6
<html>
<h1>Test Page 1</h1>
<form name="input" action="/cgi-bin/myscript-1.py" method="get">
<input type="submit" value="Submit">
</form>
</html>
當」提交」按鈕被點擊,/var/www/cgi-bin/myscript-1.py腳本將被調用(通過action參數指定)。通過設置方法參數為」get」來指定一個」GET」請求,伺服器將會返回指定的網頁。/var/www/html/page1.html在瀏覽器中的顯示情況如下:
/var/www/cgi-bin/myscript-1.py的內容如下:
1
2
3
4
5
6
7
#!/usr/bin/python
print "Content-Type: text/html"
print ""
print ""
print "CGI Script Output"
print "This page was generated by a Python CGI script."
print ""
第一行聲明表示這是使用 /usr/bin/python命令運行的Python腳本。」Content-Type: text/html」列印語句是必需的,這是為了讓web伺服器知道接受自CGI腳本的輸出類型。其餘的語句用來輸出HTML格式的其餘網頁內容。
當」Submit」按鈕點擊,下面的網頁將返回:
這個例子的要點是你可以決定哪些信息可以被CGI腳本返回。這可能包括日誌文件的內容,當前登陸用戶的列表,或者今天的日期。在你處理時擁有所有python庫的可能性是無窮無盡的。
例子2:讀取並顯示用戶輸入的數據,並將結果顯示在網頁上
對於這個方案,我們將通過創建一個含有三個輸入域和一個提交按鈕的網頁/var/www/html/page2.html開始。
XHTML
1
2
3
4
5
6
7
8
9
<html>
<h1>Test Page 2</h1>
<form name="input" action="/cgi-bin/myscript-2.py" method="get">
First Name: <input type="text" name="firstName"><br>
Last Name: <input type="text" name="lastName"><br>
Position: <input type="text" name="position"><br>
<input type="submit" value="Submit">
</form>
</html>
當」Submit」按鈕點擊,/var/www/cgi-bin/myscript-2.py腳本將被執行(通過action參數指定)。/var/www//html/page2.html顯示在web瀏覽器中的圖片如下所示(注意,三個輸入域已經被填寫好了):
/var/www/cgi-bin/myscript-2.py的內容如下:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/python
import cgi
form = cgi.FieldStorage()
print "Content-Type: text/html"
print ""
print ""
print "CGI Script Output"
print ""
print "The user entered data are:"
print "First Name: " + form["firstName"].value + ""
print "Last Name: " + form["lastName"].value + ""
print "Position: " + form["position"].value + ""
print ""
print ""
正如前面提到,import cgi語句用來確保能夠處理用戶通過web輸入表單輸入的數據。web輸入表單被封裝在一個表單對象中,叫做cgi.FieldStorage對象。一旦開始輸出,」Content-Type: text/html」是必需的,因為web伺服器需要知道接受自CGI腳本的輸出格式。用戶輸入的數據在包含form[「firstName」].value,form[「lastName」].value,和 form[「position」].value的語句中可以得到。那些中括弧中的名稱和/var/www/html/page2.html文本輸入域中定義的名稱參數一致。
當網頁上的」Submit」按鈕被點擊,下面的網頁將被返回。
這個例子的要點就是你可以很容易地讀取並顯示用戶在web表單上輸入的數據。除了以字元串的方式處理數據,你也可以用Python將用戶輸入的數據轉化為可用於數值計算的數字。
結論
本教程演示了如何使用Python CGI腳本創建網頁並處理用戶在網頁表單輸入的數據。查閱更多關於Apache CGI腳本的信息,點擊這里。查閱更多關於Python cgi模塊的信息,點擊這里。
② 怎麼用通過cgi執行python腳本(excel轉換為html的腳本)
可以直接用介面把excel內容發給前台顯示嗎,讓前台去處理顯示效果。
③ 每次上傳網站內容時,伺服器上有一個默認的CGI-BIN目錄,請問這是什麼
有那個目錄說明 你的這個伺服器可以支持ASP腳本,這個cgi-bin目錄是ASP默認放CGI腳本的,當然你也可以重命名或者刪除,前提是你在使用ASP做網頁的時候,自己指定好路徑就行了,如果你是用html做網頁的話就無所謂了,刪除也可以,不刪除也不礙事··
④ 什麼是CGI,什麼是CGI腳本
CGI是Common Gateway Interface的縮寫,是用於連接主頁和應用程序的介面。眾所周知,HTML語言的功能是比較貧乏的,難以完成諸如訪問資料庫等一類的操作,而實際的情況則是經常需要先對資料庫進行操作(比如文件檢索系統),然後把訪問的結果動態地顯示在主頁上。諸如此類的需求只用HTML是無法做到的,所以CGI便應運而生。CGI是在WebServer端運行的一個可執行程序,由主頁的一個熱鏈接激活進行調用,並對該程序的返回結果進行處理,顯示在主頁上。簡而言之,CGI就是為了擴展主頁的功能而設立的。隨後,諸如IDC、ASP、ISAPI、NSAPI等技術也發展起來了,它們的目的是相同的,只是編寫起來更容易、功能更豐富。
⑤ 怎樣在IIS中寫Python的CGI腳本麻煩告訴我
1。安裝好python;
2。配置IIS:
a.打開管理工具-〉Internet信息服務;
b.在網站屬性上右鍵,進入屬性設置;
c.轉到主目錄頁,進入應用程序配置;
d.添加一個映射:可執行文件寫:C:python23python.exe 」%s」 %s
注意pythong的路徑要指向你安裝python的位置,同時注意參數間的空格。
擴展名寫:.py
動作限制為:GET,HEAD,POST
e.選中腳本引擎,選中檢查文件是否存在;
f.一路確定完成配置。
3。編寫CGI腳本:
import CGI #倒入CGI模塊
print 'Content-Type: text/html' #必須,輸出HTML文檔頭
print # Blank line marking end of HTTP headers #必須,文檔頭必須以空行結束CGIParameters = CGI.FieldStorage() #取得Post或Get過來的參數集 # 檢查看是否是我們需要的參數
if not (CGIParameters.has_key("name") and CGIParameters.has_key("address")):#如果不是輸出form,要求填寫name和address
print "<form action='' method='post' name='form'><input name='name' id='name'><input name='address' id='address'><input type='submit' value='submit'></form>"
print "Please fill in the name and address fields."
else: #如果是我們要求的參數,輸出參數內容
print "<p>address:", CGIParameters["address"].value4。
⑥ CGI文件怎麼打開啊這是什麼類型的文件
cgi的如果說你是要看源文件的話用記事本就可以了。
如果說要看執行效果的話,需要藉助perl解釋程序和一個WEB服務(如IIS)。當然是需要配置的,讓IIS支持認.cgi文件,並通過perl解釋程序後返回結果。默認IIS是不支持perl的。在BAIDU里搜索一下IIS CGI就會有類似的文章教你配置IIS了。
什麼是CGI
1. 定義:
CGI(Common Gateway Interface)是HTTP伺服器與你的或其它機器
上的程序進行「交談」的一種工具,其程序須運行在網路伺服器上。
2. 功能:
絕大多數的CGI程序被用來解釋處理傑自表單的輸入信息,並在服
務器產生相應的處理,或將相應的信息反饋給瀏覽器。CGI程序使
網頁具有交互功能。
3. 運行環境:
CGI程序在UNIX操作系統上CERN或NCSA格式的伺服器上運行。
在其它操作系統(如:windows NT及windows95等)的伺服器上
也廣泛地使用CGI程序,同時它也適用於各種類型機器。
4. CGI處理步驟:
⑴通過Internet把用戶請求送到伺服器。
⑵伺服器接收用戶請求並交給CGI程序處理。
⑶CGI程序把處理結果傳送給伺服器。
⑷伺服器把結果送回到用戶。
5. CGI伺服器配置:
CGI程序不是放在伺服器上就能順利運行,如果要想使其在伺服器
上順利的運行並准確的處理用戶的請求,則須對所使用的伺服器進
行必要的設置。
配置:根據所使用的伺服器類型以及它的設置把CGI程序放在某一
特定的目錄中或使其帶有特定的擴展名。
⑴CREN格式伺服器的配置:
編輯CREN格式伺服器的配置文件通常為/etc/httpd.conf/
在文件中加入:Exec cgi-bin/*/home/www/cgi-bin/*.exec
命令中出現的第一個參數cgi-bin/*指出了在URL中出現的目錄
名字,並表示它出
現在系統主機後的第一個目錄中,如:
http://edgar.stern.nyn.e/cgi-bin/
命令中的第二個參數表示CGI程序目錄放在系統中的真實路徑。
CGI目錄除了可以點網路文件放在同一目錄中,也可以放在系統
的其它目錄中,但必須保證在你的系統中也具有同樣的目錄。在
對伺服器完成設置後,須重新啟動伺服器(除非HTTP伺服器是用
inetd啟動的)。
⑵NCSA格式伺服器的配置
在NCSA格式伺服器上有兩種方法進行設置:
①在srm.conf文件(通常在conf目錄下)中加入:
Script Alias/cgi-bin/cgi-bin/
Script Alias命令指出某一目錄下的文件是可執行程序,且這
個命令是用來執行
這些程序的;此命令的兩個參數與CERN格式伺服器中的Exec命
令的參數的含意一樣。
②在srm.conf文件加入:
Add type application/x-httpd-cgi.cgi
此命令表示在伺服器上增加了一種新的文件類型,其後第一個
參數為CGI程序的MIME類型,第二個參數是文件的擴展名,表
示以這一擴展名為擴展名的文件是CGI程序。
在用上述方法之一設置伺服器後,都得重新啟動伺服器(除非
HTTP伺服器是用inetd啟動的)。
什麼是IIS
首先,Internet Information Server的縮寫為(IIS)是一個World Wide Web server。Gopher server和FTP server全部包容在裡面。 IIS意味著你能發布網頁,並且有ASP(Active Server Pages)、JAVA、VBscript產生頁面,有著一些擴展功能。IIS支持一些有趣的東西,象有編輯環境的界面(FRONTPAGE)、有全文檢索功能的(INDEX SERVER)、有多媒體功能的(NET SHOW)
其次,IIS是隨Windows NT Server 4.0一起提供的文件和應用程序伺服器,是在Windows NT Server上建立Internet伺服器的基本組件。它與Windows NT Server完全集成,允許使用Windows NT Server內置的安全性以及NTFS文件系統建立強大靈活的Internet/Intranet站點。
1.IIS的安裝
IIS可以在Windows NT安裝時安裝,也可以安裝完Windows NT後用「控制面板」中的「添加/刪除程序」安裝,安裝路徑為光碟中的:i386\inetsrv\inetstp.exe。安裝過程中要求添加相應的ODBC驅動程序。
2.IIS的管理
IIS通過ISM(Internet Service Manager)進行管理,ISM有兩個版本,一個以普通應用程序的方式運行,一個在Web瀏覽器中運行,二者的差別在於後者不能啟動和停止Internet服務。
ISM(應用程序方式)管理界面:在「查看」菜單中選擇「查看報告」、「伺服器查看」、「服務查看」可以得到三種視圖:
報告視圖 預設的視圖,按字母順序依次顯示所選擇的計算機及其上安裝的服務。通過該視圖可以:連到伺服器並顯示其屬性對話框;啟動、停止或暫停服務;可選擇顯示哪些服務(FTP、WWW、GOPHER)。
伺服器視圖 顯示網路上運行Internet服務的計算機名。打開該計算機可以看到正在運行的Internet服務。雙擊伺服器名可以顯示其屬性對話框。
服務視圖 列出所有的Internet服務。打開服務可以看到哪些計算機運行該服務。雙擊服務下的計算機名,可以打開該計算機上的服務屬性對話框。
3.IIS安全性
IIS的安全性核心依賴於Windows NT Server內置的安全性,IIS自身也內置了安全性。包括加密、驗證以及IIS擴展等。
(1)Windows NT Server安全性:Windows NT提供用戶賬戶安全性、NTFS安全性。
①用戶賬戶安全性:Windows NT要求用戶提供有效賬戶以及口令才能訪問Windows NT。IIS安裝時創建Internet Guest 賬戶,預設情況下,所有IIS用戶都使用這個賬戶登錄到伺服器,這個賬戶只允許本地登錄,沒有其他權利。假如允許遠程用戶用登錄Internet Guest 賬戶登錄就不必給遠程用戶用戶名及口令,Windows NT以Internet Guest 賬戶對待。
②NTFS文件安全性:NTFS提供安全性,可以控制對數據文件的訪問,應當將數據文件放在NTFS分區。NTFS可以精確控制哪些用戶和組以什麼許可權訪問文件和目錄。
(2)IIS的安全性:除了Windows NT的安全措施外,IIS本身也有安全控制能力。通過賬戶名及口令控制訪問:可以配置WWW服務要求用戶連入伺服器之前提供一個合法的用戶名及口令
⑦ cgi-bin目錄和文件的許可權怎麼設置
1, 下載windows環境下的ActivePerl For Windows V5.8.8.820(http://www.skycn.com/soft/1211.html).
2, 解壓縮,雙擊ActivePerl-5.8.8.820-MSWin32-x86-274739.msi安裝.在此需要注意的是安裝路徑,Perl安裝的預設目錄位置為C:\usr,當然,你可以安裝在任意你喜歡的目錄,我就裝在(E:/webserver/perl/,為了便於管理)
3.配置Apache以支持CGI
打開httpd.conf修改:
ScriptAlias /cgi-bin/ "F:/project/perl/cgi-bin/"
<Directory "D:/project/perl/cgi-bin/">
AllowOverride All
Options All
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi .pl .exe
其中"F:/project/perl/cgi-bin/"是我打算存放*.pl腳本的目錄,把目錄的訪問許可權都設為All.(注意刪除前面的#,如果有的話),
在此,apache支持perl/cgi的環境就配置完整了.
4.在F:project/perl/cgi-bin目錄下創建一個hello.pl測試一下.
#!E:/webserver/perl/bin/perl.exe
#scriptname hello.pl
print "Content-type: text/html\n\n"; # 此句一定要寫而且寫准確.
print "Hello, World...\n";
注意:當您瀏覽cgi程序出現500錯誤的時候可以看一下您的程序,是不是以:#!E:/webserver/perl/bin/perl.exe開頭。
或者沒有print "Content-type: text/html;\n\n";
⑧ 怎樣在IIS中寫Python的CGI腳本
1。安裝好Python;
2。配置IIS:
a.打開管理工具-〉Internet信息服務;
b.在網站屬性上右鍵,進入屬性設置;
c.轉到主目錄頁,進入應用程序配置;
d.添加一個映射:可執行文件寫:C:/Python23/Python.exe %s %s
注意Pythong的路徑要指向你安裝Python的位置,同時注意參數間的空格。
擴展名寫:.py
動作限制為:GET,HEAD,POST
e.選中腳本引擎,選中檢查文件是否存在;
f.一路確定完成配置。
3。編寫CGI腳本:
import cgi #導入cgi模塊
print 'Content-Type: text/html'#必須,輸出HTML文檔頭
print # Blank line marking end of HTTP headers#必須,文檔頭必須以空行結束
cgiParameters = cgi.FieldStorage()#取得Post或Get過來的參數集
# 檢查看是否是我們需要的參數
if not (cgiParameters.has_key(name) and cgiParameters.has_key(address)):#如果不是輸出form,要求填寫name和address
print <form action='' method='post' name='form'<input name='name' id='name'<input name='address' id='address'<input type='submit' value='submit'</form
print Please fill in the name and address fields.
else:#如果是我們要求的參數,輸出參數內容
print <pname:, cgiParameters[name].value
4。
⑨ 什麼叫CGI
1. 什麼是CGI?
CGI(common gate intergace),通用網關介面,它是一段程序,運行在伺服器上,提供同客戶端HTML頁面的介面,通俗的講CGI就像是一座橋,把網頁和WEB伺服器中的執行程序連接起來,它把HTML接收的指令傳遞給伺服器,再把伺服器執行的結果返還給HTML頁;用CGI可以實現處理表格,資料庫查詢,發送電子郵件等許多操作,最常見的CGI程序就是計數器。CGI使網頁變得不是靜態的,而是互動式的。
2. CGI能實現什麼功能?
CGI可以提供很多HTML不能實現的功能,如:計數器,客戶信息表格的提交以及統計;搜索程序;WEB資料庫等。
4. 什麼是獨立的cgi-bin目錄?
cgi-bin是一種特殊的目錄,在進行互動式的WWW訪問(如填寫在線表格)時,需要伺服器上有相應的程序對訪問者輸入的信息進行處理,這些程序就是CGI程序。CGI程序不能放在任意的目錄下,只能放cgi-bin目錄下。有的虛擬主機系統只提供一個公用的cgi-bin目錄,放置一些常用的CGI程序供虛擬主機用戶使用,這對用戶不夠方便,因為用戶經常需要放置自己編制的CGI程序。為此,虎翼網為用戶提供了獨立的cgi-bin目錄供用戶使用。
5. 我的根目錄在什麼地方?
在/home/***目錄下,其中***是您的用戶名。
6. CGI程序應該放在什麼地方?
放在/home/***/public_html/cgi-bin/目錄下,其中***是您的用戶名。
7. CGI程序的擴展名應該是什麼?
應該是.cgi .pl或者.php .php3。
8. DATA程序在什麼地方?
在/bin/date目錄下。
9. CGI絕對路徑和PERL,PHP解釋器路徑是什麼?
CGI程序的絕對路徑是:/home/***(您的用戶名)/public_html/cgi-bin
PERL解釋器的路徑是:#!/usr/bin/perl
PHP解釋器的路徑是:#!/usr/bin/php
注意:如果CGI程序使用PERL或PHP編寫,在上傳時請用ASCII方式。
12. 為什麼PERL程序有時可以運行,有時出現500 error?
在個人用戶伺服器中,PERL程序中的require語句要使用絕對路徑。
例如:用戶xxx的yyy.cgi中需要調用zzz.cgi,
假定zzz.cgi在public_html/cgi-bin/下,正確的做法是:
在yyy.cgi中:
將 require "zzz.cgi"; 改為:
require "/home/xxx/public_html/cgi-bin/zzz.cgi";
13. 為什麼我運行CGI程序時出現「500 Internal Server error」的錯誤?
通常500錯誤是由於伺服器不能識別程序運行時輸出的內容類型而導致的,可能的原因有:
1. 請注意PHP、CGI程序的上傳方式一定要用ASCII碼方式。
2. 請檢查CGI程序是否有語法、拼寫的錯誤。
3. CGI程序必須首先輸出文檔類型。如:Content-Type: text/html\n\n
14. 為什麼我運行CGI程序時總是顯示「forbidden」?
CGI程序本身屬性應為可執行,也就是屬性為755。
15. 怎樣設置CGI的許可權?
您可以通過FTP軟體中的chmod命令來修改自己目錄的屬性。也可以在MSDOS下使用命令行更改許可權。
用戶自己不需要設置CGI程序許可權,系統會自動設置。如果您有需要保密的數據,請將它的許可權設置為700。