我一直在尝试在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脚本的输出。
答案 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强制执行的严格限制时,此类问题无法解决。常见错误是:
答案 2 :(得分:0)
谢谢Scavokovich。
在我的情况下,以下行在httpd.conf文件中被注释掉了。
#LoadModule cgi_module /opt/freeware/lib64/httpd/modules/mod_cgi.so
取消注释,并重新启动apache
允许CGI脚本运行而不是作为文本文件打开。