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。