【问题标题】:Windows - How to output a Cgi fileWindows - 如何输出 Cgi 文件
【发布时间】:2014-06-28 15:19:35
【问题描述】:

我有一个 cpp 项目,我可以编译并作为 exe 执行。

但是我正在学习分布式系统并且我需要一个 cgi 文件,这个文件将放在我的 apache 服务器 (xampp) 上的 cgi-bin 文件夹下。

知道如何在 Windows 中执行此操作吗?

我在获取特定的 cgi 扩展时遇到了问题,我还需要在我的 xampp apache 服务器中配置任何东西来运行这个 cgi 文件。我注意到服务器本身在安装时有 3 个文件,所以我认为它是自动配置的。

【问题讨论】:

  • 哪一部分;如何配置您的网络服务器以在特定路径下或使用特定扩展名执行 cgi 程序?或者如何编写一个遵循 CGI 规范的程序?或者如何将 HTML 输出到 STDOUT?
  • @DavidO 嗯,现在我将编辑我的问题,xampp 是否已经配置为运行 cgi 文件....当程序完成安装时,那里大约有 3 个 cgi 文件。我需要特定扩展的帮助,但如果它需要特定的配置来运行 cgi 程序,请帮助我。
  • 好吧,这是 CGI 规范如何工作的问题。原则上它非常简单,但超出了 SO 问题/答案的范围。你应该首先找到一个教程,然后问一个具体的问题,而不是“整个事情”之类的问题。内容太多了,网上已经详细介绍过了。
  • @DavidO 好友没有。我已经有书面代码,我只想要一个cgi文件,我不想在linux上编译它,我想知道是否有办法在windows中做到这一点。当我认为不需要时,您是在谈论服务器上的特定配置的人。
  • @DavidO 我不想被“喂”,我搜索了谷歌,但找不到任何与从 c 源代码获取 cgi 文件相关的内容。

标签: c apache cgi


【解决方案1】:

我不具体了解 Windows,但我在我的 Linux (Ubuntu) 服务器上的 Apache2 上测试了以下内容。

您可以通过扩展名“cgi”运行 CGI。我编译了一个“HelloWorld”C++ 程序并将其命名为“HelloWorldC.cgi”,只要我指定了正确的 Content-type 输出,它就会正确执行。

C++ 代码:

#include <iostream>
using namespace std;

int main() {

    cout << "Content-type: text/html\n\n" << endl;
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}

HTML 代码: (test.html)

<a href="HelloWorldC.cgi">HelloWorldC.cgi</a>

在浏览器中加载 test.html 链接时的输出:

!!!Hello World!!!

我认为 Windows 的问题可能是严格按扩展运行程序类型的严格性。 Linux 将根据程序的实际运行情况(通过程序的标头)运行程序。 Apache 将对由配置的 CGI 选项运行的程序执行 CGI 输出。

对于 Windows,您可以通过将“.exe”添加到 mime 处理程序类型来让您的服务器执行程序。

即(将 .exe 添加到 addhandler 指令中):

AddHandler cgi-script .cgi .pl .exe

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多