HTML表单操作最终下载perl文件而不是执行它

时间:2013-03-17 06:26:46

标签: perl apache cgi

我一直在尝试在Windows 7上运行一个简单的perl-cgi脚本。这是一个带有OK按钮的简单HTML表单,单击OK按钮会显示一些文本。但是,单击HTML页面上的“确定”按钮,浏览器开始下载脚本,而不是执行和显示perl文件的输出。我在httpd.conf中添加了处理程序

AddHandler cgi-script .pl

但这没有用。我在httpd.conf中添加了ExecCGI选项,但这也没有帮助。

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
    AllowOverride None
    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

以下是使用的perl脚本:

#!C:\Perl\bin\perl
use CGI;

print "Content-type: text/plain","\n\n";
print "<html>","\n";
print "<head>\n\t<title>Server Information Ready</title>\n</head>","\n";
print "<body>","\n";
print "<h1>Server Information</h1>","\n";
print "</body></html>","\n";

这是html文件:

<html>
<head><title>Server Information</title></head>
<body bgcolor="#EEAA55">
<h3>Please click OK to get the server information</h3>
<hr><pre>
<form action="http://localhost/cgi-bin/ctest/pranav1a.pl" method="post">
<input type="submit" value="OK">
</form>
</hr></pre>
</body>
</html>

我在chrome,IE和Mozilla上试过这个。 Mozilla和chrome启动perl文件下载,但IE只是在单击OK按钮时显示一些奇怪的内容。 如何让浏览器显示文件执行输出而不是启动脚本下载?

PS:我曾尝试使用shebang line作为'#!c:/ Perl / bin / perl',这似乎也不起作用。从cmd提示符执行时,我能够看到perl脚本的输出。

3 个答案:

答案 0 :(得分:1)

找到解决方案:在我的情况下,我在表单操作中使用'localhost'而不是'localhost:8080'。

<form action="http://localhost:8080/cgi-bin/pranav1a.pl" method="post">

答案 1 :(得分:0)

+ExecCGI选项怎么样?试试前面的+

此外,这些通常是理解suexec2的问题(不确定suexec2是否适用于Windows平台):

阅读whole page over there。当您不理解suexec强制执行的严格限制时,此类问题无法解决。常见错误是:

  • 对suexec2可执行文件的错误权限。
  • CGI脚本位于错误的位置。

你有没有完成apache.org/docs/2.2/howto/cgi.html#troubleshoot的工作?

答案 2 :(得分:0)

谢谢Scavokovich。

在我的情况下,以下行在httpd.conf文件中被注释掉了。

#LoadModule cgi_module /opt/freeware/lib64/httpd/modules/mod_cgi.so

取消注释,并重新启动apache允许CGI脚本运行而不是作为文本文件打开。