linux apache2 执行CGI程序怎么全是文本?

是不是写出来的C语言程序不用编译?还是要编译?还是怎么的?只有放在cgi-bin目录下面的.html打开正常,

其他的不管什么文件什么的打开全部是以字符串的形式(不管编译没编译)翻译过来的,这是源码也是使用文本形式打开

这是编译以后的二进制文件

我要的是CGI程序执行,不是把二进制文件用文本的形式打开!!另外Addhandler sctipt 我改成了.cgi编译出来的程序也改成了该后缀.Options 也改了+ExecCgi,如图所示

这是网页代码

这是CGI源码

请问这是什么问题?
该加的都加了

加上octet-stream .cgi成这样

保存文件?我要的是执行,不是保存,另外我用的是LInux,Ubuntu 10.10

我自己搞了一天终于搞出来了,希望遇到同样问题的同志看这里,apache2.4.6所有编译安装完了以后如果运行CGI出现二进制乱码的话就是少了一个库文件,很重要的库文件,叫做mod_cgi.so,这玩意在解压出来的安装包/httpd-2.4.6/modules/generators目录下用/usr/local/apache2/bin/apxs -i -a -c mod_cgi.c编译出.so文件,最后在httpd.conf配置文件中加上一句话LoadModule cgi_module modules/mod_cgi.so这玩意加在很多以LoadModule开头的东东当中就行了,希望遇到同样问题的同学赶紧看到这个,同样感谢额exile1026同学的帮助,虽然没帮到,这200分送你算了。

    是要编译为机械码( binary code ) 的

    HTML 能在 cgi-bin 里正常出现其实并不正常.. 一定程度上代表这个 dir 还没设成一个执行 cgi 的环境 ( 但我不肯定 )

    你是否已在 MIME 里面加入了 AddType application/octet-stream  .exe ( 或 .cgi 甚麼的 )

    或者 AddHandle? 如 AddHandler cgi-script .exe ( 或 .cgi 甚麼的 )


主要来说我颇肯定这里是 conf 里的问题, 但如果你真的调试时, 最好先写个最简单的 exe 来测试, 甚至装再更轻量点的 server, 如 ngnix 来试试..

追问

看补充

追答

apache 的 conf 档, 和 .htaccess 档都是很玄的东西, 除了该设的设定对了, 还需其他设定不能错了... 就凭几个截图实在无法帮你找到错在那里... 因为还要有相对的系统配置, chmod xxx, Alias, 是 Directory 还是 Location... 等等等等, 如果你本身是 apache 的新手, 那建议你先将 conf 回复到最原始状, 然後去 sourceforge 下一个叫 Apache GUI 软件, 我想这样你会比较顺手..

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-26
最佳回答:
你是否加载了 mod_cgi module?
你可以在文件夹 /etc/apache2/mods-enabled/ 下面是否有cgi.load的链接,如果没有该链接,通过以下方式创建:
sudo a2enmod cgi
或者
sudo a2enmod cgid

然后重启Apache:
sudo service apache2 restart

搞定!
第2个回答  2013-10-15
apache的配置问题。你配置正确了就不会有问题了。另外C语言一般用来与apache集成。通常使用php的话可以得到相当好的效果,而且几乎不用配置(可以直接安装lamp服务器)。如果实在要使用C的话,也可以用php来调用编译器并运行编译后的结果,并将结果导出给客户端浏览器。
第3个回答  2013-10-15
apache里面的cgi目录设置解析语言吗?看你这样的应该是没有设置解析语言,你设置一下看看追问

C语言怎么设置解析语言?

相似回答