如何为C ++ CGI脚本配置apache?

时间:2012-03-17 21:02:20

标签: c++ apache cgi

我为Perl找到了很多东西,但对于C ++却没有。我现在正在运行Ubuntu,但我对它很缺乏经验,所以简单的指令会很棒。我刚刚写了一个小的C ++程序,作为CGI工作,我需要测试它。谢谢!

2 个答案:

答案 0 :(得分:3)

你不需要做任何特别的事情;只需将其编译为名为*.cgi(或诸如此类)的可执行文件,并确保您有

AddHandler cgi-script .cgi
您的服务器配置中的

(或诸如此类)或.htaccess或诸如此类的。

(免责声明:我已经做了很多年了,所以我可能会忘记一些事情。但我认为应该是你所需要的全部。)

答案 1 :(得分:2)

C ++程序没有什么特别之处。 CGI程序由Web服务器执行。因此先决条件也与Perl脚本/程序相同。

以下是一些启动并运行C ++ CGI程序的提示。

  • 在cgi-bin目录中放入一个简单的可执行文件,并使其可由Web服务器执行。准备一个返回有效CGI响应的简单程序,例如

    #include <iostream>
    using namespace std;
    
    int main()
    {
        cout << "Content-Type: text/html" << endl << endl;
        cout << "Hello to Apache and Firefox!" << endl;
        return 0;
    }
    
  • 在命令行上执行程序,并检查输出是否以以下行开头。确保Content-Type之后的空行。

    $ ./hello_world
    Content-Type: text/html
    
    Hello to Apache and Firefox!
    
  • 增加LogLevel以进行调试并查看Web服务器错误日志。搜索访问日志,错误日志和suexec.log。查看您正在使用的虚拟主机的日志以及主error.log中的日志。在我的Ubuntu系统上,文件位于/var/log/apache2并命名为access.log,error.log和suexec.log。我最后一个问题是“目录可由其他人写入:......”

  • 使用DLL时,请确保Web服务器上的库仍然可用。将RPATH设置为指向包含库的自定义目录。在此背景下,lddobjdump -x <executable> | grep RPATH是您的朋友。

  • (来自Apache文档的这个技巧对我来说不起作用:使用Apache的mod_cgi模块中的ScriptLog指令观察输入和输出.ScriptLog只能在开发服务器上使用。更多细节可以从mod_cgi页面。)

  • 文章Debugging Apache Web Server Problems中显示了更多提示。