如何在 localhost 中运行 perl 脚本?
Posted
技术标签:
【中文标题】如何在 localhost 中运行 perl 脚本?【英文标题】:How to run a perl script in localhost? 【发布时间】:2012-02-13 05:38:38 【问题描述】:我已经安装了 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/。 请帮忙!!
谢谢
【问题讨论】:
我检查了我的 apache 错误日志,发现它采用了不同的路径到文件 /usr/lib/cgi-bin/perl_1.pl(即 ubuntu 的 cgi 脚本的默认位置),然后我将文件位置从 /var/www/cgi-bin/perl_1.pl 更改为该位置,脚本运行良好...但是如何更改该目录或如何将 ExecCgi 添加到我创建的目录???? 【参考方案1】:您无法读取 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 的局限性时,你知道下一步该去哪里。
【讨论】:
另外,请确保文件权限正常。应为 Web 服务器用户设置执行权限(例如chmod u+x perl_1.pl
)。
感谢您的回复。我尝试直接执行文件。但随后它显示 404:在此服务器上未找到请求的 URL /cgi-bin/perl_1.pl。如果你请让我知道一些细节或步骤,我对配置了解不多。谢谢【参考方案2】:
您的 Apache 是如何配置的? 您确定要告诉 Apache 在 cgi-bin 目录中执行 CGI 脚本吗?
类似:
ScriptAlias /cgi-bin/ "/var/www/website/cgi-bin/"
<Directory "/var/www/website/cgi-bin/">
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
...
</Directory>
【讨论】:
【参考方案3】:如果您没有绑定到 apache 或者可以在不同的端口上运行这些脚本,那么您可以使用 Plack/PSGI 工具链,该工具链具有将旧 CGI 脚本作为 PSGI 应用程序运行的解决方案。请参阅Running CGI scripts on Plack 了解几种方法。
【讨论】:
我是 perl 的初学者,只是在编写我的测试脚本。尽管我可以从“padre”编辑器中执行它,但我无法在浏览器中获取 o/p。谢谢以上是关于如何在 localhost 中运行 perl 脚本?的主要内容,如果未能解决你的问题,请参考以下文章