1. 程式人生 > >C++編寫第一個CGI程式

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

這裡寫圖片描述

四、遇到的錯誤

    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錯誤日誌)中檢視詳細錯誤資訊。

這裡寫圖片描述