设为首页 加入收藏

TOP

利用Shell或其他脚本语言在Apache下写CGI
2014-11-24 07:51:29 来源: 作者: 【 】 浏览:0
Tags:利用 Shell 其他 脚本 语言 Apache 下写 CGI

本文从最基本的流程来介绍一下如何配置Apache使其支持CGI,并用Bash和Python写一个Hello World的动态CGI程序。以下的Apache配置以红帽系的Linux为准。


配置Apache


首先需要确认Apache里面的CGI模块已经被载入,一般在/etc/httpd/conf/httpd.conf里面的会有下面这句话:


LoadModule cgi_module modules/mod_cgi.so


然后在httpd.conf里面(一般是最后)加入下面这句话:


ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"


编写Hello World CGI脚本


接下来我们在/var/www/cgi-bin/目录里面创建一个hello.cgi文件,这个文件我们用Bash来写。在里面输入下面的内容:


#! /bin/bash


echo Content-type: text/html


echo ""


echo Hello, World.


然后修改文件的执行权限使得Apache进程能够执行这个文件。一般用chmod +x hello.cgi就可以。


注意到上面的输出的第一行必须是输出“Content-type: text/html“否则Apache识别不了这个文本页面的输出。


如果使用Python的话,可以创建一个hello.py文件,输入下面的内容:


#! /usr/bin/python


print("Content-type: text/html\n\n")


print("Hello, World.")


获取脚本的环境变量


一般情况下,我们编写CGI的目的都是动态的处理客户端的请求,而不是显示静态内容。这个时候我们可以通过环境变量来获取相关的值。下面主要是介绍获取通过GET来传递的值。


首先编写如下shell cgi脚本:


#! /bin/bash


echo Content-type: text/html


echo ""


/usr/bin/env #注意这里设置成env命令的绝对路径,可以通过whereis env来获取


然后在浏览器请求这个cgi就可以看到相关的环境变量。我们也可以看到GET的参数是通过$QUERY_STRING来获取的。


所以在shell的cgi里面,我们就可以通过$QUERY_STRING来获取GET参数。


而在Python里面,则可以通过form的getfirst()函数来获取,具体可以看下面的例子:


#! /usr/bin/python


import cgi # 导入cgi模块


form = cgi.FieldStorage() # 获取form对象


var1 = form.getfirst('var1', 'empty') # form对象已经封装了GET和POST方式的请求,所以两种的参数都可以获取。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Qt中通过ODBC连接MSSQL数据库 下一篇C里面的scanf对于空白字符的处理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)