我已经安装了 Apache。我在本地主机中使用 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/ 。
您无法读取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 的局限性时,你就知道下一步该去哪里。
您的 Apache 是如何配置的? 您确定要告诉 Apache 在 cgi-bin 目录中执行 CGI 脚本吗?
类似:
ScriptAlias /cgi-bin/ "/var/www/website/cgi-bin/"
<Directory "/var/www/website/cgi-bin/">
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
...
</Directory>
如果您没有依赖 apache 或者可以在不同的端口上运行这些脚本,那么您可以使用 Plack/PSGI 工具链,该工具链具有将旧 CGI 脚本作为 PSGI 应用程序运行的解决方案。请参阅在 Plack 上运行 CGI 脚本了解执行此操作的多种方法。