Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 为什么我的Perl CGI脚本在浏览器中显示为纯文本?_Macos_Cgi - Fatal编程技术网

Macos 为什么我的Perl CGI脚本在浏览器中显示为纯文本?

Macos 为什么我的Perl CGI脚本在浏览器中显示为纯文本?,macos,cgi,Macos,Cgi,我一直在尝试让mac成为Web服务器,现在我正在尝试制作一个简单的html表单和一个输出输入的perl脚本。我将/Library/WebServer/Documents符号链接到~/Sites/,因此我的index.html和display.cgi都在那里。但当我按下submit时,perl文件只显示为文本。我拥有的任何cgi文件都不会执行,它只是显示为文本。我做错了什么?谢谢。除非您的服务器专门设置为在/Library/WebServer/Documents文件夹中运行perl脚本,否则您必须

我一直在尝试让mac成为Web服务器,现在我正在尝试制作一个简单的html表单和一个输出输入的perl脚本。我将/Library/WebServer/Documents符号链接到~/Sites/,因此我的index.html和display.cgi都在那里。但当我按下submit时,perl文件只显示为文本。我拥有的任何cgi文件都不会执行,它只是显示为文本。我做错了什么?谢谢。

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

完成此操作后,请确保已设置Perl脚本的权限,使其可执行。要执行此操作,请转到终端中的包含目录,然后键入
chmod a+x display.cgi

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

不要忘记在“shebang行”前面添加#符号,如以下示例:

#!d:/perl/bin/perl

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

注意,-w将显示警告。

要回答您的其他问题:

要从
CGI-bin
目录之外使用CGI脚本,您可能需要深入查看配置文件。主目录是
/private/etc/httpd/httpd.conf
,您必须使用终端才能访问它,因为默认情况下,
/private/
目录是隐藏的


或者,您可以在要放置脚本的目录中创建一个
.htaccess
文件。应该能帮你弄清楚放什么进去。请注意,Apache手册中不会包含任何特定于Mac的信息,因为它也用于其他操作系统。

+1,请先告诉我三件事,以便在提供cgi脚本时检查静态:ExecCGI目录选项,+x对cgi和shebang行的权限是有效的。我的shebang已经是/usr/bin/perl。谢谢,这很有效,但是你能回答我关于name/id的问题吗?我如何防止/cgi-bin/display.cgi出现在地址栏中?关于name/id的问题是什么?我在原来的帖子里看不到。为什么
#!d:/perl/bin/perl
与Mac OS X问题有关吗?我的谢邦很好,
#/usr/bin/perl-wT
#!d:/perl/bin/perl与Mac OS X问题无关,但它对Windows perl用户非常有用。很抱歉给你带来了困惑。