【问题标题】:Why does my Perl CGI script showing up as plain text in the browser?为什么我的 Perl CGI 脚本在浏览器中显示为纯文本?
【发布时间】:2009-11-03 03:40:27
【问题描述】:

我一直在尝试使我的 mac 成为网络服务器,现在我正在尝试制作一个简单的 html 表单和一个打印输入的 perl 脚本。我有 /Library/WebServer/Documents 符号链接到 ~/Sites/,所以我的 index.html 和 display.cgi 都在那里。但是当我按下提交时,perl 文件只是显示为文本。我没有执行的任何 cgi 文件,它只是显示为文本。我究竟做错了什么?谢谢。

【问题讨论】:

    标签: macos cgi


    【解决方案1】:

    除非您的服务器专门设置为在 /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

    【讨论】:

    • +1,当你的 cgi 脚本被静态服务时,我要检查三件事:目录的 ExecCGI 选项,cgi 和 shebang 行的 +x 权限有效。
    • 我的 shebang 已经是 /usr/bin/perl。谢谢,这行得通,但你能回答我关于姓名/身份证的问题吗?
    • 我怎样才能防止 /cgi-bin/display.cgi froms 出现在地址栏中?
    • 关于姓名/身份证的问题是什么?我在原帖中看不到。
    【解决方案2】:

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

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

    注意:-w 将显示警告。

    【讨论】:

    • 为什么#!d:/perl/bin/perl 会与 Mac OS X 问题相关?
    • 我的shebang很好,#!/usr/bin/perl -wT
    • #!d:/perl/bin/perl 与 Mac OS X 问题无关,但它对 Windows Perl 用户很有用。很抱歉造成混乱。
    【解决方案3】:

    回答您的其他问题:

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

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

    【讨论】:

      猜你喜欢
      • 2016-03-17
      • 2014-09-18
      • 2018-10-15
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2022-10-05
      • 2010-11-16
      相关资源
      最近更新 更多