2009-10-18 113 views
1

我一直在玩我的Mac一个网络服务器,现在我试图做一个简单的HTML表单,并打印出输入的Perl脚本。我将/ Library/WebServer/Documents链接到〜/ Sites /,所以我的index.html和display.cgi都在那里。但是当我按下提交时,perl文件只显示为文本。我拥有的任何cgi文件都没有执行,它只是显示为文本。我究竟做错了什么?谢谢。为什么我的Perl CGI脚本在浏览器中显示为纯文本?

回答

3

除非您的服务器专门设置为运行/Library/WebServer/Documents文件夹中的perl脚本,否则您必须改为将它们放入/Library/WebServer/CGI-Executables。 (然后从URL中的/cgi-bin/路径访问它们,例如http://localhost/cgi-bin/display.cgi。)

一旦你这样做了,确保你已经在Perl脚本上设置了权限,以便它是可执行的。为此,请转到终端中的包含目录,然后键入chmod a+x display.cgi

此外,请检查脚本的第一行(shebang行)是否具有正确的perl路径。在我的Mac上,Perl位于/usr/bin/perl,但如果您想检查自己,请运行命令which perl

+0

+1,这是100%的web服务器配置和0%perl。 – hobbs 2009-10-18 02:09:04

+0

+ 1,击败我的三件事情来检查你的cgi脚本被提供静态:目录的ExecCGI选项,cgi和shebang行的+ x权限是有效的。 – Mark 2009-10-18 02:11:37

+0

我的shebang已经是/ usr/bin/perl。谢谢,这工作,但你也可以回答我的问题关于名称/ ID? – mk12 2009-10-18 02:18:49

0

不要忘了加#号的“认领线”的前面,如下面的例子:

#!d:/perl/bin/perl 

#!/usr/local/bin/perl -w 

注:-w会显示警告。

+0

为什么'#!d:/ perl/bin/perl'与Mac OS X问题有关? – 2009-10-18 02:38:45

+0

我的shebang很好,'#!/ usr/bin/perl -wT'。 – mk12 2009-10-18 02:47:18

+0

#!d:/ perl/bin/perl与Mac OS X问题无关,但对于Windows Perl用户来说这是一个有用的问题。对困惑感到抱歉。 – meme 2009-10-19 20:30:43

0

为了回答您的其他问题:

要从cgi-bin目录以外使用CGI脚本,你可能不得不潜入配置文件。主要的是/private/etc/httpd/httpd.conf,您必须使用终端才能到达,因为/private/目录默认为隐藏。

或者,您可以在要放置脚本的目录中创建一个.htaccess文件。 This manual page应该可以帮助你计算出放在那里的东西。请注意,Apache手册中不包含任何Mac特定的信息,因为它也用于其他操作系统。

相关问题