【问题标题】:Execute a .cgi file in Ubuntu在 Ubuntu 中执行一个 .cgi 文件
【发布时间】:2011-07-02 06:22:03
【问题描述】:

我在 Ubuntu 下运行 Apache/PHP

当我运行.cgi 文件时,通过http://localhost/mycgi.cgi,浏览器将显示代码而不是运行它。

如何让浏览器执行 CGI 文件而不是显示其内容?

【问题讨论】:

  • 投票迁移到askubuntu.com
  • @daxim:我不认为这真的是 ubuntu 特有的问题。问题在这里是正确的。

标签: perl ubuntu apache2 cgi


【解决方案1】:

将这些行添加到您的 apache2.conf 文件中

<Directory /usr/local/apache2/htdocs/somedir>
    Options +ExecCGI
</Directory>

AddHandler cgi-script .cgi .pl

【讨论】:

  • +1 简短而简单。在虚拟主机上使用时,需要在标签内的标签中指定该选项,“Options +ExecCGI”对单独无效。
【解决方案2】:

显然,CGI 执行设置不正确。你试过tutorial吗?

通常,所有CGI 脚本都放在某个位置,例如cgi-bin。仅执行该文件夹中存在的文件。否则,它们将被视为普通文件,Web 服务器只是将它们作为源返回。

tutorial 向您展示了可用于使脚本执行而不是仅作为文本文件返回的替代方法。

【讨论】:

  • 我确实在 usr/www/mywww/cgi-bin 中创建了一个 cgi-bin 是你的意思吗?如果不是,我应该把它放在哪里?
  • @Jean:仅仅创建一个cgi-bin 目录还不够。帮自己一个忙,阅读教程。他们在那里很好地解释了事情。
  • 那个教程就是屎。例如“ScriptAlias 指令看起来像:ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/ 显示的示例来自您的默认 httpd.conf 配置文件,如果您将 Apache 安装在默认位置”这不是对我来说是真的
【解决方案3】:

确保 .cgi 或 .pl 文件中的 shebang 行是正确的。 shebang 行告诉 Apache Perl 解释器在哪里(Perl 解释器是 perl.exe 文件)。

Apache 教程说:

您的第一个 CGI 程序 下面是一个示例 CGI 程序,它在浏览器中打印一行。键入以下内容,将其保存到名为 first.pl 的文件中,并将其放在 cgi-bin 目录中。 #!/usr/bin/perl print "内容类型:text/html\n\n"; 打印“你好,世界。”;

所以这里的shebang行是#!/usr/bin/perl

但是,如果 perl.exe 位于不同的文件夹中,则需要更改 #!/usr/bin/perl!即使对于通常可以完全忽略和省略 shebang 行的 Windows 用户也是如此。 (为什么教程没有提到这个事实,我不知道 - 我猜他们没有意识到有些人总是忽略 shebang 线?)

例如,当我安装 Perl 时,系统会自动建议我在 C:\Program Files (x86)\Perl64 中安装 Perl 在我的 Perl64 文件夹中是名为“bin”的文件夹,里面是 perl.exe

所以我不得不将 shebang 行改为:#!C:/Program Files (x86)/Perl64/bin/perl.exe 在我可以让 cgi 脚本与 Apache 一起工作之前。

【讨论】:

    【解决方案4】:

    这让我在 Amazon Ubuntu 14.04 上感到困惑。我有一个“工作”了几年的配置:

    sudo a2enmod cgi
    sudo service apache2 restart
    

    针对一些现有的带有 .cgi 扩展名的 Perl 脚本和现有的虚拟主机配置进行了整理。也错了[不是这个问题,而是与这次升级有关]:

    virtual.host
    

    需要成为

    virtual.host.conf
    

    在它被识别为有效之前。

    【讨论】:

      猜你喜欢
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 2011-04-05
      • 2011-09-14
      • 1970-01-01
      相关资源
      最近更新 更多