我为Perl找到了很多东西,但对于C ++却没有。我现在正在运行Ubuntu,但我对它很缺乏经验,所以简单的指令会很棒。我刚刚写了一个小的C ++程序,作为CGI工作,我需要测试它。谢谢!
答案 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设置为指向包含库的自定义目录。在此背景下,ldd
和objdump -x <executable> | grep RPATH
是您的朋友。
(来自Apache文档的这个技巧对我来说不起作用:使用Apache的mod_cgi模块中的ScriptLog指令观察输入和输出.ScriptLog只能在开发服务器上使用。更多细节可以从mod_cgi页面。)
文章Debugging Apache Web Server Problems中显示了更多提示。