4

我已经安装了 Apache。我在 localhost 中使用 PHP 编写脚本。需要知道如何运行 perl 脚本。我已经安装了 sudo aptitude install libapache2-mod-perl2 我在我的 /var/www/cgi-bin 中创建了一个目录名称 cgi-bin 在这个文件夹里面我保留了我的 perl 脚本 perl_1.pl 目录权限被赋予。我还需要做什么才能运行脚本????我只是输入http://localhost/cgi-bin/ 并收到错误 403 您无权访问此服务器上的 /cgi-bin/。请帮忙!!

谢谢

4

3 回答 3

5

您无法读取 cgi-bin 的内容。您必须直接引用其中的一个脚本,在这种情况下:http://localhost/cgi-bin/perl_1.pl

除此之外,请确保您的 cgi-bin/ 目录实际上在 httpd.conf 中被视为如此。

哦,如果你后来偶然发现 500:确保你的 perl 脚本打印一个有效的 HTTP 标头。这可以通过以下方式轻松实现:

use CGI qw(:standard);
print header();

正如 Pwex 指出的那样:确保您的脚本设置了可执行位。

chmod 755 perl_1.pl

...应该在大多数情况下工作

此外,为了将来的参考,值得一提的是 mod_perl,因为它是在掌握 cgi + perl + apache 的基础知识之后自然而然的下一步。详细介绍它超出了这个答案的范围,但我想我会提到它,这样当你确定了基础知识并看到了 cgi 的局限性时,你就知道下一步该去哪里。

于 2012-01-18T14:00:14.993 回答
3

你的 Apache 是如何配置的?你确定你告诉 Apache 在 cgi-bin 目录中执行 CGI 脚本吗?

就像是:

ScriptAlias /cgi-bin/ "/var/www/website/cgi-bin/"
<Directory "/var/www/website/cgi-bin/">
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch

                ...
</Directory>
于 2012-08-18T11:37:56.110 回答
0

如果您没有绑定到 apache 或者可以在不同的端口上运行这些脚本,那么您可以使用 Plack/PSGI 工具链,该工具链具有将旧 CGI 脚本作为 PSGI 应用程序运行的解决方案。有关执行此操作的几种方法,请参阅在 Plack 上运行 CGI 脚本。

于 2012-01-18T14:09:31.450 回答