当作为服务运行时,perl 应用程序不会在 apache 中启动

当作为服务运行时,perl 应用程序不会在 apache 中启动

我已经安装了 Netdisco,这是一个基于 perl 的网络发现工具

当我以 root 身份从终端提示符运行 httpd 时,它运行正常。

当我尝试启动 Apache 作为服务(服务 httpd 启动)时,出现以下错误:

Starting httpd: [Mon Apr 23 19:45:48 2012] [warn] module perl_module is already loaded, skipping
[Mon Apr 23 19:45:48 2012] [warn] module apreq_module is already loaded, skipping
Syntax error on line 22 of /etc/httpd/conf/netdisco_apache.conf:
Can't locate netdisco.pm in @INC (@INC contains: /usr/local/netdisco /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 . /etc/httpd) at /etc/httpd/conf/netdisco_apache.conf line 26.\nBEGIN failed--compilation aborted\t(in cleanup) Can't locate netdisco.pm in @INC (@INC contains: /usr/local/netdisco /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 . /etc/httpd) at /etc/httpd/conf/netdisco_apache.conf line 26.\nBEGIN failed--compilation aborted at /etc/httpd/conf/netdisco_apache.conf line 26.\n

我尝试将 apache 用户添加到 netdisco 组 netdisco,得到了相同的结果。

netdisco.pm 肯定位于 @INC 中的第一个文件夹 (/usr/local/netdisco),并且 netdisco 用户/组拥有该文件夹和所有文件,包括 netdisco.pm

为何无法启动?

答案1

确保 apache 用户对 /usr/local/netdisco 文件夹具有执行权限,并对 /usr/local/netdisco/netdisco.pm 文件具有读取权限。

您还可以strace启动 apache 来查找正在尝试访问哪些文件。如果这些文件存在,则存在权限问题。除了 Unix 权限之外,您还必须检查 SELinux 配置。

相关内容