2011-08-10 141 views
2

我需要我的apache web服务器来运行C++编译的二进制文件。我已经完成了所有我在不同的教程中告诉设置我的cgi-bin目录,但没有任何帮助!在apache2上配置cgi

我已经加入到Apache的配置(站点可用/默认):

ScriptAlias /cgi-bin/ /var/www/cgi-bin/ 
<Directory "/var/www/cgi-bin"> 
    AllowOverride None 
    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch 
    Order allow,deny 
    Allow from all 
    AddHandler cgi-script .cgi 
</Directory> 

我的C++文件(/var/www/cgi-bin/test.cgi)只是简单COUTS的Hello World!但,当我问这个文件浏览器,我收到错误:内部服务器错误!

+0

你可以从控制台窗口发布test.cgi的输出吗? –

+0

另外,Apache错误日志说什么? –

+0

控制台输出test.cgi:Hello World! –

回答

3

你的test.cgi不输出任何头文件。它应该输出套头和身体,用一个空行分开,这样的事情:

Content-type: text/plain 

Hello world! 

还有更多的东西,可能是问题,但通过添加“内容类型”头开始,测试程序输出的空行。

+0

我添加了内容类型,但仍然不工作! –

+0

根据“文件不存在”错误信息判断,您还有其他一些问题 - 它是否像apache用户一样运行程序? –

1

非常感谢!对于我来不及回答,感到抱歉。

不访问文件的问题通过更改权限解决。但是,我创建的文件夹名称有一个错误/var/www/cgi-bin/,其中cgi-bin是文件夹/usr/lib/cgi-bin/的别名。

当我把test.cgi文件存在那里,我可以访问该文件,但仍然在apache中记录了Header Content的错误。这是因为标题应为Content-type: text/html

+0

感谢您的更新,但是这样会更好地编写为问题的更新编辑而不是新的答案。 – hlovdal