【问题标题】:Problem with Executing CGI Scripts on Apache在 Apache 上执行 CGI 脚本的问题
【发布时间】:2010-12-23 22:24:45
【问题描述】:

这里几乎是一个完整的 Linux/Apache 新手,我正在将站点从共享主机移动到 Linode VPS。在我开始尝试移动使用一系列 CGI 脚本运行的 Moveable Type 博客之前,一切都很顺利。我正在运行 Ubuntu 10.04 和 Apache2。经过几个小时的折腾,我得到了一个 PERL hello world 脚本(hello.cgi),可以从 HTML 根目录中的 Web 浏览器执行。这是脚本:

#!/usr/bin/perl -w
use strict;
print "Content-Type: text/html\n\nHello world!";

我通过将以下内容添加到 /etc/apache2/sites-available/mysitename.com 文件来完成这项工作。

<Directory /srv/www/mysitename.com/public_html/>
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory>

但我想在 /srv/www/mysitename.com/public_html/mt/ 目录中执行 CGI 脚本,所以我将上面条目中的目录更改为该路径,当我查看该文件夹中的 hello world 脚本时通过浏览器,我看到了 hello.cgi 脚本的源代码而不是输出。显然有些不对劲。我已经花了足够多的时间试图自己解决这个问题,现在是寻求帮助的时候了。那么,有人有什么建议吗?请保持简单的答案,我真的只是在这里学习如何在 Linux/Apache2 上玩水!

找到的解决方案:

<VirtualHost *:80>
  ServerName www.sitename.com
  ServerAdmin general@sitename.com
  ServerAlias sitename.com
  DocumentRoot /srv/www/mysitename.com/public_html/
  ErrorLog /srv/www/mysitename.com/logs/error.log
  CustomLog /srv/www/mysitename.com/logs/access.log combined
  AddHandler cgi-script .cgi .pl
</VirtualHost>

<Directory /srv/www/mysitename.com/public_html/>
    AllowOverride All
    Order allow,deny
    Allow from all
    Options All +SymLinksIfOwnerMatch +FollowSymLinks +ExecCGI -Indexes -MultiViews
</Directory>

<Directory /srv/www/mysitename.com/public_html/mt/>
    AllowOverride All
    Order allow,deny
    Allow from all
    Options All +SymLinksIfOwnerMatch +FollowSymLinks +ExecCGI -Indexes -MultiViews
</Directory>

【问题讨论】:

    标签: apache2


    【解决方案1】:

    你添加了 mod-perl 吗?

    添加这些行

    AddType perl-script .pl
    AddHandler perl-script .htm
    

    指定一个目录索引

    (在目录块之外)

    你也在使用虚拟主机吗?老实说,我通常不会像你那样做事。

    【讨论】:

    • 是的,添加了 mod-perl。不确定 DirectoryIndex 会对我看到的问题产生什么影响。不知道什么是虚拟主机(告诉你我是新手 :))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2017-04-24
    • 2013-03-11
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多