C++编写第一个CGI程序

环境:

  • wamp3.1.0 64bit
  • VS2015
  • cmake 3.12.0

一、CGI简介

1、在进行交互式的WWW访问时,服务器上需要有相应的程序对输入的信息进行处理,这些程序就是CGI程序。
2、cgi-bin目录:用于存放CGI程序的特殊目录,CGI程序不能放在任意的目录下,只能放在CGI-BIN目录。
3、CGI程序可以用很多种语言编写,C、python、C++等等都可以,这里采用C++语言编写一个个简单的CGI程序

二、加上Includes ExecCGI

修改http.conf

这里写图片描述

 ScriptAlias /cgi-bin/ "C:/wamp64/www/cgi-bin/"

这里是配置存放cgi程序的文件夹,指定路径为:C:/wamp64/www/cgi-bin/
找到下面这句:

Options Indexes FollowSymLinks Multiviews

加上Includes ExecCGI,保存后重启wamp

这里写图片描述

三、编写CGI程序

    通过配置,我们将cgi程序规定放置在www目录下的cgi-bin文件夹下,接下来是新建一个文件夹,用于编写C++,这个文件夹存放位置没有规定,只需要将这个C++编写的cgi程序生成的exe文件放置到www/cgi-bin目录下即可。

1、新建目录,这里新建空的build文件夹用于存放cmake编译后生成的文件、CMakeLists.txt文件用于编写camke命令(cmake编译依赖于CMakeLists.txt文件)、hello.cpp文件用于编写cgi程序

这里写图片描述

2、编写hello.cpp,CGI文件第一句一定要先定义类型(例如:Content-type:text/html\n\n),然后跟着是一个新空行,在下来就是主程序了

这里写图片描述

3、这里采用cmake编译,需要编写CMakeLists.txt

这里写图片描述

4、使用cmake编译

这里写图片描述
这里写图片描述

进入build目录下,运行hello.sln解决方案,以VS2015方式打开。之后运行即可生成exe文件

这里写图片描述

或者通过cmd命令进入到build文件夹下(前提是需要配置好了环境变量)

msbuild hello.vcxproj

这里写图片描述

环境变量配置:

必须扩展 PATH 环境变量以包括 .NET Framework 文件夹,在path变量中添加以下值(电脑上要装有安装.net framework):

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

新建变量:

这里写图片描述

5、编译完成后将build\Debug\hello.exe复制到C:\wamp64\www\cgi-bin下,并重命名为hello.cgi

6、运行,访问:http://localhost/cgi-bin/hello.cgi即可

这里写图片描述

四、遇到的错误

    CGI文件第一句一定要先定义内型,然后跟着是一个新空行,在下来就是主程序了,如果定义类型后没有输出文件头及换行,直接就是主程序,所以一才导致下面出现的错误。
CGI不执行,apache错误日志:Premature end of script headers,或 malformed header from script. Bad headerXXX,这种情况,还是检查一下CGI输出的第一句话是啥。应该是形如:
Content-type:text/html\n\n
注意:声明好Content-type后要输出两个空行。
可在C:\wamp64\logs\apache_error.log(apache错误日志)中查看详细错误信息。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/baidu_41327283/article/details/82715549