CGI 是 web 服务器运行时外部程序的规范, 按 CGI 编写的程序可以扩展服务器功能 CGI 应用程序能与浏览器进行交互, 还可通过数据库 API 与数据库服务器等外部数据源进行通信, 从数据库服务器中获取数据格式化为 html 文档后, 发送给浏览器, 也可以将从浏览器获得的数据放到数据库中几乎所有服务器都支持 CGI, 可用任何语言编写 CGI, 包括流行的 CC ++VB 和 Delphi 等 CGI 分为标准 CGI 和间接 CGI 两种标准 CGI 使用命令行参数或环境变量表示服务器的详细请求, 服务器与浏览器通信采用标准输入输出方式间接 CGI 又称缓冲 CGI, 在 CGI 程序和 CGI 接口之间插入一个缓冲程序, 缓冲程序与 CGI 接口间用标准输入输出进行通信
上面这一段话第一次接触 cgi, 可能不懂到底什么意思, 下面举一个例子方便理解
以 Apache 为例, apache 的根目录里面有一个文件夹为 / cgi-bin, 在配置文件 httpd.conf 中搜索 cgi
- <IfModule alias_module>
- ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
- </IfModule>
- <IfModule cgid_module>
- #Scriptsock cgisock
- </IfModule>
- <Directory "/usr/local/apache/cgi-bin">
- AllowOverride All
- Options None
- Require all granted
- </Directory>
进入 cgi-bin 目录下, 创建一个文件, 文件名为 index.cgi, 文件扩展名为. cgi, 这个和 php 文件的扩展名是. php 是一样的
index.cgi 的内容如下:
- #!/bin/bash
- #index.cgi
- echo "Content-Type:text/html;charset=utf-8"
- echo
- echo "hello world"
然后在浏览器中访问 localhost/cgi-bin/index.cgi, 你就会看到结果如下:
然后将 index.cgi 的内容改一下:
- #!/bin/bash
- #index.cgi
- echo "Content-Type:text/html;charset=utf-8"
- echo
- mysql="mysql -uroot -proot"
- sql="show databases"
- $mysql -e "$sql"
浏览器运行如下:
其实, 从上面的例子中, 你就会得出一点结论, cgi 就和 php 类似, 只不过 php 文件中使用的使用 php 的语法, cgi 中使用的 shell 命令, 但是, 都可以通过浏览器来运行脚本, 获得结果
来源: http://www.bubuko.com/infodetail-2526665.html