Назад | Перейти на главную страницу

Ошибка 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 показывает это:

[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 confirmg также кажутся правильными, и соответствующие пути в конфигурации 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, кто-нибудь может мне сказать, что здесь не так?

Это 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, чтобы найти файл, расположенный в том же каталоге.

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