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

我正在CentOS上运行monitorix ,使用我的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> 

此外,以下configuration为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界面。 所以httpdconfiguration似乎工作正常。

当我点击[确定]button,我得到这个错误:

致命的:Monitorix是无法继续!

没有find文件“monitorix.conf.path”。

请确保“base_dir”选项已正确configuration,并且此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 confirm中的path似乎也没问题,并且在monitorix config中匹配的path似乎也是正确的。

但不知何故path不正确。 我尝试了base_dir,没有结尾的斜杠,但是没有帮助。

行210尝试之前的/usr/share/monitorix/cgi/monitorix.cgi文件

 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.pathconfiguration文件。

当你只显示Perl文件的一个片段时,这只是猜测:

  • 要么没有默认的monitorix.conf.path ,你必须在/usr/share/monitoryx/cgi/
  • 或者Perl CGI正在/usr/share/monitoryx/ base_dir/cgi/查找它,而不是base_dir/cgi/因为它是在单击button时得到的错误消息中解释的。

当然,这是最好的猜测。 Perl CGI仍然有机会在一个完全不同的地方寻找它的configuration文件。

我发现这个问题:mod_perl被启用并与cgi混淆,以find位于同一目录中的文件。

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