Я использую OTRS на RedHat 6.5 с apache2 и mod_perl2. Один из моих серверов (среда Sandbox) имеет следующее (обратная связь yum info):

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";
}

Песочнице не хватает двух строк в части вывода «environment» по сравнению с Dev:

MOD_PERL_API_VERSION 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 содержит файл Include: include conf.d /*. Conf

3) это .conf по умолчанию от OTRS, но я не могу найти ошибку:

# 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 ответ1

0

Так что, если кто-нибудь окажется здесь после поиска в Google: это как-то связано со строкой 16 в zzz_otrs.conf по умолчанию:

<IfModule mod_version.c>

в качестве теста я изменил его на

<IfModule core.c>

И тогда все работает так, как вы ожидаете. Это, очевидно, грязный обходной путь, если mod_perl не установлен должным образом, это приведет к сбою apache. Если я найду лучшее (более общее) решение, чем это, я обновлю.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .