关于apache上的CGI文件问题总结--为什么无法找到cgi文件、为什么找到了cgi文件却不执行反而询问是否下载或直接显示文件代码

在研究Apache CGI时遇到问题,包括找不到CGI文件和执行错误。解决方法包括:1) 确保CGI文件在正确目录,如/usr/local/apache2/cgi-bin/,且权限为755;2) HTML表单的action路径使用/localhost/cgi-bin/...而非绝对路径;3) 配置httpd.conf文件,添加CGI文件类型及ExecCGI选项。无需更改配置文件也可成功执行CGI,但原因待深入研究。

最近我在研究web、cgi,比较好奇cgi这玩意,就在Ubuntu上下载安装了Apache(2.2版本),并写个简单的html文件 test.html 和相关的cgi文件 t.cgi。

Apache的安装路径为默认路径:/usr/local/apache2。经过对Apache初步简单粗暴的学习,将 test.html 放在了/user/local/apache2/htdocs/ 下,将  t.cgi 放在了 /user/local/apache2/cgi-bin/ 下。

在浏览器上访问 test.html ,在对话框中输入数据,点击提交按钮后,但老出现错误,要么是找不到cgi文件,要么找到了cgi文件却不是执行而是询问是否下载或是直接显示文件代码。

又是一番网上查资料。

网上的回答是:

1、更改 /user/local/apache2/conf/ 下的httpd.conf配置文件(这个文件是关于web服务的配置文件),里面有一个关于 /user/local/apache2/cgi-bin/

项的配置。添加可执行的cgi文件类型,比如:.cgi  .sh  .pl  等,另外,在Options选项上增加ExecCGI。

2、更改cgi文件权限为777。

我也是一切照做了,但弄来弄去问题依旧,郁闷呐!

通过将近一天的倒腾,终于黄天不负有心人!

首先,我写了一个简单的shell脚本test.sh,放在了/user/local/apache2/cgi-bin/下,并在浏览器输入/user/local/apache2/cgi-bin/test.sh后,会出现询问是否下载或是直接显示文件代码。做法:

1:浏览器上路径改为/localhost/cgi-bin/test.sh

2:test.sh文件权限应该为755,不要搞成777那种丑陋的权限;

3:确保cgi文件如test.sh没有语法问题,在终端上可以执行。

至于网上更改httpd.conf配置文件的方法,我保持中立!因为我在没有更改http.conf配置文件的情况下,cgi文件也能在浏览器上执行得很好。至于为什么,我也不能说出来,对于httpd.conf配置文件还有待深入研究!

其次,就是在html文件中的action选项上,路径最好不要写成型如 /user/local/apache2/cgi-bin/... 这样的绝对路径,而是写成/localhost/cgi-bin/...的路径。像我的一般出现找不到cgi文件的情况,action改为后者就解决了!像一般真实客户端输入URL也是类似于后者的!

完!

若文章有不妥,望前辈们指导批评!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值