0

我一直在尝试在 Windows 7 上运行一个简单的 perl-cgi 脚本。这是一个带有 OK 按钮的简单 HTML 表单,单击 OK 按钮会显示一些文本。但是点击 HTML 页面上的 OK 按钮,浏览器开始下载脚本,而不是执行和显示 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 行用作 '#!c:/Perl/bin/perl' 似乎也不起作用。从 cmd 提示符执行时,我可以看到 perl 脚本的输出。

4

3 回答 3

1

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

<form action="http://localhost:8080/cgi-bin/pranav1a.pl" method="post">
于 2013-03-20T03:05:24.267 回答
0

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

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

在那里阅读整页。如果您不了解 suexec 实施的总体限制,则此类问题无法解决。常见错误有:

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

您是否通过apache.org/docs/2.2/howto/cgi.html#troubleshoot工作过?

于 2013-03-17T20:13:35.700 回答
0

谢谢斯卡沃科维奇。

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

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

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

于 2015-01-27T20:42:27.607 回答