【问题标题】:ModPerl::Registry - Cannot run CGI perl scriptModPerl::Registry - 无法运行 CGI perl 脚本
【发布时间】:2014-10-30 11:03:01
【问题描述】:

我在 Apache 2.4.7 和 Ubuntu 14.04 下。

我正在尝试在ModPerl::Registry 下运行以下基本 perl 脚本 (/home/fred/workspace/portfolio/cgi/fred.pl) 但它不会执行(浏览器将其视为要下载的文件,而不是 perl 脚本)

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "Hi Fred !";

这是我的虚拟主机配置:

<VirtualHost 127.0.0.1:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /home/fred/workspace/portfolio/html

AddHandler perl-script .cgi .pl
PerlModule ModPerl::Registry
Alias / /home/fred/workspace/portfolio/cgi/
<Location />
        SetHandler perl-script
        PerlHandler ModPerl::Registry
        Require all granted
        Options +ExecCGI
</Location>

我之前跑过

sudo a2enmod cgi

实际上启用了 cgid(我的 apache 是线程化的),很好。

当我输入 127.0.0.1/fred.pl 时,没有执行(fred.pl 的权限为 777)

有什么想法吗?

谢谢

【问题讨论】:

  • 你检查过错误日志吗?
  • 是的,error.log 中没有异常。在 access.log 中有这个:127.0.0.1 - - [05/Sep/2014:14:58:06 +0200] "GET /fred.pl HTTP/1.1" 200 249 "-" "Mozilla/5.0 (X11; Ubuntu;Linux x86_64;rv:32.0) Gecko/20100101 Firefox/32.0"
  • 如果我说 curl localhost/fred.pl 有效吗?

标签: perl apache2 cgi mod-perl2 mod-perl-registry


【解决方案1】:

我要检查的第一件事是您是否拥有正确的 apache 配置文件。 (简单的检查方法:输入语法错误,然后在重新启动服务器时查看它是否抱怨。)

如果它是正确的文件,那么您的配置指令有问题。在不查看整个文件的情况下很难调试它们。您可以尝试从一个非常简单的配置部分开始,例如 here

我可能会关闭 cgid,直到你也能正常工作。

【讨论】:

    【解决方案2】:

    拳头,PerlHandler 处理程序是 mod_perl1 指令。 mod_perl2 有 PerlResponseHandler 处理程序替代。

    所以下面是对的:

    PerlResponseHandler ModPerl::Registry
    

    你加载了 mod_perl.so 吗?当你使用 Ubuntu 时,输入:

    sudo a2enmod perl
    

    或者写合适的LoadModule线,重启服务器。

    也许,还有其他问题。但是我没有足够的信息。

    最后我建议 mod_perl2 现在(2014 年 12 月)不正式支持 Apache 2.4

    【讨论】:

      猜你喜欢
      • 2015-05-27
      • 2013-03-11
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2019-11-08
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多