mod_perl 在 Apache/2.2.15 (Red Hat) 上未激活

mod_perl 在 Apache/2.2.15 (Red Hat) 上未激活

我在装有 apache2 和 mod_perl2 的 RedHat 6.5 上使用 OTRS。我的一台服务器(沙盒环境)有以下情况(yum 信息反馈):

Installed Packages
Name        : httpd
Arch        : x86_64
Version     : 2.2.15
Release     : 39.el6

Name        : mod_perl
Arch        : x86_64
Version     : 2.0.4
Release     : 11.el6_5

我们注意到开发服务器的性能存在差异。因此,我将以下脚本放在与 index.pl 相同的目录中,以查看是否正在使用 mod_perl:

#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "Server's environment\n";
foreach ( keys %ENV ) {
print "$_\t$ENV{$_}\n";
}

与 Dev 相比,Sandbox 在输出的“环境”部分缺少两行:

MOD_PERL_API_版本 2

MOD_PERL mod_perl/2.0.4

因此我很确定 mod_perl 没有被使用。但据我所知,一切都已配置:

1)/etc/httpd/conf.d/perl.conf 包含以下行:LoadModule perl_module modules/mod_perl.so

2)/etc/httpd/conf/httpd.conf 包含一个包含:包含 conf.d/*.conf

3)这是 OTRS 的默认 .conf,但我找不到错误:

# Setup environment and preload modules
Perlrequire /opt/otrs/scripts/apache2-perl-startup.pl

# Reload Perl modules when changed on disk
PerlModule Apache2::Reload
PerlInitHandler Apache2::Reload

# general mod_perl2 options
<Location /otrs>
#        ErrorDocument 403 /otrs/customer.pl
    ErrorDocument 403 /otrs/index.pl
    SetHandler  perl-script
    PerlResponseHandler ModPerl::Registry
    Options +ExecCGI
    PerlOptions +ParseHeaders
    PerlOptions +SetupEnv

    <IfModule mod_version.c>
        <IfVersion < 2.4>
           Order allow,deny
           Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </IfModule>
    <IfModule !mod_version.c>
        Order allow,deny
        Allow from all
    </IfModule>
</Location>

# mod_perl2 options for GenericInterface
<Location /otrs/nph-genericinterface.pl>
    PerlOptions -ParseHeaders
</Location>

</IfModule>

但模块已经加载:

[user@server httpd]$ httpd -M | grep perl
Syntax OK
perl_module (shared)
[user@server httpd]$ httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

谁能发现错误或有其他步骤来排除为什么无法使用 mod_perl?

答案1

因此,如果有人在谷歌搜索后最终来到这里:它与默认的 zzz_otrs.conf 中的第 16 行有关:

<IfModule mod_version.c>

作为测试我将其更改为

<IfModule core.c>

然后一切都按预期运行。这显然是一种肮脏的解决方法,如果 mod_perl 安装不正确,这将导致 apache 崩溃。如果我找到比这更好(更通用)的解决方案,我会更新。

相关内容