从网上执行perl?

时间:2013-02-20 23:33:05

标签: perl apache2 cgi

我有一个Perl脚本Main.pl,它读取文本并输出XML文档。当我通过SSH连接到我的Unix服务器并从命令行运行脚本时,它会输出正确的XML;但是当我在浏览器中访问http://localhost/Main2.pl时,它只显示Perl代码,当我尝试在支持jQuery的网页(使用$.post("http://localhost/Main2.pl"))中对其进行POST时,它不起作用

我做错了什么?

您可以在http://moxie.cs.oswego.edu/~cmunger2/coursework/Poetry_project/Main2.pl看到Perl脚本;试图使用它的页面是http://moxie.cs.oswego.edu/~cmunger2/coursework/Poetry_project/index.html

2 个答案:

答案 0 :(得分:3)

Perl脚本在服务器上执行,而JavaScript则在用户的机器上执行。因此,您需要配置Web服务器以允许执行脚本,以及可以执行哪些路径。这是因为从Web运行时,您基本上允许任何人运行代码在您的服务器上,这可能是一个很大的安全问题。您可以在SSH时执行您的脚本,因为您已以特权用户身份登录。由于我提到的安全原因,Web权限被锁定。

通常,大多数Web服务器允许从默认的/cgi-bin目录执行Perl脚本,并且它们通常以.cgi扩展名命名。有时服务器只允许执行.cgi脚本,尽管它们可能与.pl脚本完全相同。

我将研究如何从您的Web服务器配置可执行文件,或者如果您使用的是Web主机(或看起来您正在使用大学服务器),请查看它们如何配置可执行文件访问。可能已经有一个默认的可执行区域,例如/cgi-bin

您的特定大学服务器完全有可能不允许可执行访问,但在您进行一些研究/询问之前,您不会知道。 /cgi-bin目录的存在/不存在可能是一个明显的标志。

答案 1 :(得分:2)

服务器未配置为从该位置运行CGI脚本。

此外,即使它是,您也会收到500错误,因为您的Perl脚本不是正确的CGI脚本。至少,您需要输出一个标题,指定您要返回的内容类型以及与XML文档编码匹配的编码。