monitorix 3.4.0 错误:未找到文件“monitorix.conf.path”

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,我得到了正确显示 Monitorix 版本 v3.4.0 的 HTML 界面。因此 httpd 配置似乎运行良好。

当我单击[确定]按钮时,出现此错误:

严重: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 配置中的路径似乎也正常,并且与 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,谁能告诉我这里出了什么问题?

答案1

这个 Perl CGImonitorix.cgi根本找不到名为 的配置文件monitorix.conf.path

由于您仅显示 Perl 文件的一个片段,因此这只是猜测:

  • 要么没有默认值monitorix.conf.path,你必须创建一个/usr/share/monitoryx/cgi/
  • 或者 Perl CGI 正在 中查找它/usr/share/monitoryx/,而不是base_dir/cgi/像您单击按钮时收到的错误消息中所解释的那样。

当然,这都是最好的猜测。Perl CGI 仍有可能在完全不同的地方寻找其配置文件。

答案2

我发现了问题:mod_perl 已启用并与 cgi 混淆以查找位于同一目录中的文件。

感谢#freenode.net #monitorix IRC 频道的 Mikaku 解决这个问题!

相关内容