我在名为Chrome的目录中有一个guestbook.htm
文件(/home/chankey/Desktop/Chrome/guestbook.htm),其内容如下:
<html>
<head>
<title>Guestbook</title>
</head>
<body>
<form action="/home/chankey/Desktop/Chrome/guestbook.pl" method="get">
<table>
<tr><td>Name</td><td><input name="name" type="text" value=""></td></tr>
<tr><td>E-Mail</td><td><input name="email" type="text" value=""></td></tr>
<tr><td>Location</td><td><input name="loc" type="text" value=""></td></tr>
<tr><td>Comments</td><td>
<TEXTAREA name="comments" rows="10" cols="32"></TEXTAREA></td></tr>
</table><br><br>
<input type="submit" value="Add Entry">
</form>
</body>
</html>
在同一个Chrome目录中,我有一个文件“guestbook.pl”,其内容为
#!/usr/bin/perl
my $query_string = "";
#Get the input
if ($ENV{REQUEST_METHOD} eq 'POST') {
read(STDIN, $query_string, $ENV{CONTENT_LENGTH});
} else {
$query_string = $ENV{QUERY_STRING};
}
##### We will remove this
print "Content-Type: text/html\n\n";
print "Query String is \n<br> $query_string";
##### We will remove this
当我执行guestbook.htm文件时,会出现一个表单,当我填写数据并单击“添加条目”按钮时,将打开一个新页面,其中显示完整的脚本。
即。脚本“guestbook.pl”没有执行。我可以知道这背后的原因吗?为什么脚本没有执行? (我已经给了这个文件的执行权限。)
在httpd.conf文件中我添加了
AddHandler cgi-script cgi pl
<Directory /home/chankey/Desktop/Chrome/>
Options +ExecCGI
</Directory>
仍然没有执行。让我知道原因。
答案 0 :(得分:4)
当您在本地访问文件(通过浏览器中的file://
类型URL)时,它不是从Web服务器运行的,所以:
httpd.conf
/ .htaccess
个文件无效有几种方法可以解决这个问题:
public_html
的文件夹。您的网络服务器可能具有将http://localhost/~chankey/
映射到/home/chankey/public_html
的设置。 (在MacOSX上,首选名称为Sites
,我相信。)在SELinux系统上,您必须专门授予Apache使用此方法的权限。CGI
包的Perl脚本的特定情况,您也可以从终端shell手动运行它们,并将其输出重定向到临时文件(例如>/tmp/output.html
),然后可以访问/var/www/html/
... PS /无关:我强烈建议,如果您打算将其放在互联网上,您应该use CGI; use strict;
并启用污点模式#!/usr/bin/perl -WT
......