Apache之CGI
3、.htaccess文件 ·.htaccess文件是针对目录进行配置的一种方法。·Apache在提供一个资源时,会在此资源所在目录中寻找.htaccess文件,如果有,则使其中的指令生效。AllowOverride 指令决定了.htaccess文件是否有效,它指定了哪些指令可以出现在其中,或者根本不允许使用。
A、为此,需要在主服务器配置中如此配置:
AllowOverride Options
B、在.htaccess文件中,需要如此配置:
Options +ExecCGI
以使Apache允许此目录中CGI程序的执行。
二、第一个CGI程序
这个CGI程序例子在浏览器中打印一行文字。把下列存为first.pl文件,并放在你的cgi-bin目录中。
#!/usr/bin/perl
print "Content-type: text/html ";
print "Hello, World.";
三、排错
从网络访问CGI程序,浏览器中可能会发生四种情况:
·CGI程序的输出 这说明一切正常。
·CGI程序的源代码或者一个"POST Method Not Allowed"消息 这说明Apache没有被正确配置以执行CGI程序,重新阅读configuring Apache看看遗漏了什么。
·一个以"Forbidden"开头的消息 这说明有权限问题。参考Apache error log和下面的文件的权限。
·一个"Internal Server Error"消息
查阅Apache error log,可以找到CGI程序产生的出错消息"Premature end of script headers"。对此,需要检查下列各项,以找出不能产生正确HTTP头的原因。
3、1文件的权限
·服务器不是以你的用户身份运行的,在服务器启动后,拥有的是一个非特权用户的权限-通常是``nobody''或者``apache'' -而需要更大的权限以允许文件的执行。通常,给予``nobody''足够的权限以执行文件的方法是,对文件赋予everyone execute权限:chmod a+x first.pl
·另外,如果需要对其他文件进行读取或写入,也必须对这些文件赋予正确的权限。
3、2路径信息
当你在命令行执行一个程序,某些信息会自动传给shell而无须你操心,比如一个路径,告诉shell你所引用的文件可以在哪儿找到。但是,在CGI程序通过网站服务器执行时,则没有此路径,所以,你在CGI程序中引用的任何程序(如sendmail)都必须指定其完整的路径,使shell能找到它们以执行你的CGI程序。普通的用法是,在CGI程序的第一行中指明解释器(通常是perl),形如:#!/usr/bin/perl 必须保证它的确指向解释器。
3、3语法错误
多数CGI程序失败的原因在于程序本身有问题。在用浏览器测试以前,先在命令行中执行你的程序,能够发现大多数的问题。
3、4出错记录
出错记录是你的朋友。任何错误都会在出错记录中有记载,所以你应该首先查看它。学会阅读出错记录,可以快速找出问题并快速解决。
页:
[1]