配置APACHE支持CGI(WIN环境)

安装APACHE的方式不变,这里要说的主要是如何 让APACHE支持CGI。

首先要下载ActivePerl-5.8.4.810-MSWin32-x86
  安装ActivePerl可以让Apache支持CGI和PL的程序,下载地址:http://www.activestate.com/Produ ... .plex?id=ActivePerl,找到如下的页面进行下载MSI包。

这个程序主要是用来在程序里解析CGI程序的。后续例子会讲到。

下载安装完后,默认安装,会装在C根目录下。

安装完成后,修改httpd.conf

主要有几个地方

1、查找scriptAlias /cgi-bin/ 把路径该成你的WEB路径,例如:"c:/myweb";

2、查找<directory ,在1的后面,这里主要是设置路径的访问权限,该成如下

<Directory /var/www/cgi-bin>
      AllowOverride All
      Options ExecCGI
      Order allow,deny
      Allow from all
   </Directory>

这里如果设置错误,将会产生以下错误

You don't have permission to access...

3、查找AddHandler cgi-script .cgi,后面加上.pl ,即 AddHandler cgi-script .cgi .pl

4、重新启动APCHE,测试以下例子:

hello.cgi

#! C:/Perl/bin/perl
print "Content-type: text/html/n/n";
print "Hello,World.";

其中第一行为解析程序安装路径

第二行为必须,写每行后面必须加";"

该测试程序如产生以下错误

The server encountered an internal error or misconfiguration and was unable to complete your request,cgi

则一般是因为:

  1. CGI 程式中沒有印出:欲输出内容的MIME形态

    一般而言,就是没传回 Content-type: text/html 再加上一列空白行分隔.

    请查 CGI 程式是否有 print "Content-type: text/html/n/n";

  2. 您的 CGI 程式呼叫 Perl 的 magic code 路径不对.

    在程式的第一行要放上 Perl 的呼叫路径.

    如 #! /usr/bin/perl 或 #! /usr/local/bin/perl

    可以 telnet 进主机后, 下 which perl 指令寻找.

  3. 欲开启或写入的档案, 其绝对路径错误.

    例如 $guestbook_file="/home/your_dir/www/gbk.txt";

  4. 欲开启或写入的档案或目录, 其权限没设置好. 

    通常要写入的档案 权限要设置为 666, 仅提供读的档案, 权限设置为 755.

    或者让 nobody 身份拥有写入或读取权限



  5. 上传 CGI 程式时, 沒有用 ASCII 模式上传.

  6. CGI 程式的语法有误, 可能是忘了在某一列 Perl 敘述之後, 加上 ';' 这个结束符号, 或是忘了加上括号() { }. 或者是其它语法错误导致.

  7. CGI 程式本身的权限属性没设置好, 通常 CGI 程式设为 755, 或者让 nobody 身份拥有写入或读取权限。
  8. 您可能是在印出 html 语法时, 忘了把双引好中的其它双引号給 meta 掉(或称作 escape 掉).

    例如: print "<font color="red">Hello</font>/n"; 便是错误的语法.

    应改成 print "<font color=/"red/">Hello</font>/n";

    也就是說在双引号中, 若要有双引号, 应写成 /" 來 替代 " .

    比较方便的做法是使用 perl 的 qq, 可將上面改写成:

    print qq(<font color="red">Hello</font>/n);

    或者, 使用 Here document 的写法:

    print <<HERE;

     <font color="red">Hello</font>
     ..............................

    HERE


  9. 上传至 Unix/Linux/FreeBSD 主机之后, 每列结尾出现 ^M 的符号. 将这些符号删除即可.

  10. 若您的程式有利用 DBI+DBD 撰写 SQL 资料库程式, 则当某些 SQL 语法错误时, 也会产生 Error 500.


  11. 程式有使用 die 语法來 catch error, 而沒有做适当的 "错误或例外处理".

  12. require 某一个 perl file, 但该 perl file 并不存在,或者路径错误.

  13. 引用的 Perl 模组(module), 并未安装好, 或者, 忘了加 use 语法来引用模组,却用了某一模组的函式功能.

  14. 在 Win95/98 中试图使用 flock 语法來 "锁定/解开" 档案, 也会发生 Error 500.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值