#!/usr/bin/perl -w use strict; use Text::Wrap; $Text::Wrap::columns = 70; open (my $out, ">&=3") or die "could not open FD 3\n"; my $apache = ". /etc/apache2/envvars && /usr/sbin/apache2"; my $res = `$apache -t 2>&1`; my @modules; my $php; if ($res !~ "Syntax OK") { # if we are not root, syntax check will fail because ssl private keys # are not readable print $out "Config file syntax check failed.\n" if $> == 0; @modules = sort glob("/etc/apache2/mods-enabled/*.load"); map { s{^/etc/apache2/mods-enabled/(.*)\.load$}{$1} } @modules; print $out "List of /etc/apache2/mods-enabled/*.load:\n"; } else { @modules = sort `$apache -M 2>&1`; @modules = map { /^ (.*)_module \(shared\)/ ? ($1) : () } @modules; print $out "List of enabled modules from 'apache2 -M':\n"; } if (! scalar @modules) { print $out "Could not determine module list\n"; } else { my $missing; foreach my $m (@modules) { if (-e "/etc/apache2/mods-available/$m.conf" and ! -e "/etc/apache2/mods-enabled/$m.conf") { $m .= "*"; $missing = 1; } if ($m =~ /^(php\d)/) { $php = $1; } } print $out wrap(" ", " ", "@modules\n"); print $out wrap(" ", " ", "(A * means that the .conf file for that module is not " . "enabled in /etc/apache2/mods-enabled/)\n") if $missing; } if (defined $php) { my @exts = qx{egrep ^extension= /etc/$php/apache2/php.ini /etc/$php/apache2/conf.d/* 2>/dev/null}; if (scalar @exts) { chomp @exts; @exts = grep { ! m{\.dpkg-(?:bak|dist):} } @exts; @exts = sort grep { s{^.*:extension=(\S+)\.\S+}{$1} } @exts; print $out "List of enabled $php extensions:\n"; print $out wrap(" ", " ", "@exts\n"); } }