Ошибка monitorix 3.4.0: файл 'monitorix.conf.path' не найден

Я запускаю monitorix на CentOS, используя мой сервер apache (в отличие от встроенного сервера) со следующим дополнением к виртуальному хосту:

Alias /monitorix /usr/share/monitorix
<Directory /usr/share/monitorix>
    Options -Indexes +FollowSymLinks
    Order allow,deny
    Allow from all
    AllowOverride All
</Directory>
<Directory /usr/share/monitorix/cgi>
    AddHandler cgi-script .cgi
    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry
    PerlOptions +ParseHeaders
    Options +ExecCGI +FollowSymLinks
    Allow from all
    AllowOverride All
</Directory>

Далее следующий конфиг для самого monitorix:

base_dir = /usr/share/monitorix/
base_lib = /usr/lib/monitorix/
base_url = /monitorix
base_cgi = /monitorix/cgi

Когда я открываю URL http://domain.com/monitorix, я получаю интерфейс HTML, корректно отображающий версию Monitorix v3.4.0. так что конфиг httpd вроде бы работает нормально.

когда я нажимаю кнопку [ОК], я получаю эту ошибку:

FATAL: Monitorix не может продолжить!

Файл 'monitorix.conf.path' не найден.

Пожалуйста, убедитесь, что опция base_dir правильно настроена, и этот CGI (monitorix.cgi) находится в каталоге base_dir / cgi /.

И не забудьте перезапустить Monitorix, чтобы изменения вступили в силу!

мой http logfile показывает это:

[Fri Mar 28 10:26:01 2014] [error] FATAL: File 'monitorix.conf.path' was not found! at /usr/share/monitorix/cgi/monitorix.cgi line 210.\n

что говорит мне, что CGI тоже работает нормально. Кажется, что пути в httpd-подтверждении тоже в порядке и совпадают с путями в конфигурации monitorix.

Но почему-то путь не в порядке. Я попытался использовать base_dir с косой чертой и без нее, но это не помогло.

файл /usr/share/monitorix/cgi/monitorix.cgi до строки 210 пытается

open(IN, "< monitorix.conf.path");
my $config_path = <IN>;
chomp($config_path);
close(IN);

файл /usr/share/monitorix/cgi/monitorix.conf.path также существует.

Я не очень хорошо знаю PERL, кто-нибудь может сказать мне, что здесь не так?

2 ответа

Это Perl CGI monitorix.cgi просто не может найти свой конфигурационный файл с именем monitorix.conf.path,

Поскольку вы показываете только фрагмент файла Perl, это только догадки:

  • либо нет по умолчанию monitorix.conf.path и вы должны были создать один в /usr/share/monitoryx/cgi/
  • или Perl CGI ищет его в /usr/share/monitoryx/не base_dir/cgi/ как это объясняется в сообщении об ошибке, которое вы получили при нажатии на кнопку.

Конечно, это все лучшие догадки. Существует вероятность того, что Perl CGI ищет свой файл конфигурации в совершенно другом месте.

Я обнаружил проблему: mod_perl был включен и возился с cgi, чтобы найти файл, расположенный в том же каталоге.

спасибо Микаку из IRC-канала #freenode.net #monitorix за решение этой проблемы!

Другие вопросы по тегам