5 use CGI::Carp qw(fatalsToBrowser);
8 # List of modules, required direcrty by your application
10 my @modules=qw(MIME::Lite Image::Size HTML::TreeBuilder
11 POSIX Storable HTML::BBReverse Fcntl Date::Parse
12 LWP::UserAgent Net::OpenID::Consumer);
15 # This array have to be filled manually by looking into Makefile.PL:
16 # of neccessary CPAN modules and copying contents of PREREQ_PM argument
17 # of it. Of course, recursively.
20 "Net::OpenID::Consumer" => {
21 'LWP::UserAgent' => 0,
30 "HTML::TreeBuilder" => {
31 "HTML::Parser" => 2.19,
32 'HTML::Tagset' => 3.02,
35 'Class::ErrorHandler' =>0,
51 print $cgi->header(-type=>'text/html',-charset=>'windows-1251'),
52 $cgi->start_html(-title=>'Hosting information');
54 print $cgi->h1("Hosting information");
55 print $cgi->h2("Perl information");
56 print "Perl version:",$cgi->escapeHTML($]),"<br>\n";
57 print "\@INC:",$cgi->escapeHTML(join(" ",@INC)),"<br>\n";
58 print "CGI.pm version: $CGI::VERSION<br>";
59 print $cgi->h2("Required modules");
61 for $module (@modules) {
62 if (exists $modver{$module}) {
63 $ver = $modver{$module}
65 eval "use $module; \$ver=\$${module}::VERSION;";
67 print "$module : <font color=\"red\">not found</font><br>";
68 if (exists $prereq{$module}) {
73 $modver{$module} = $ver;
75 print "$module: $ver<br>";
78 print $cgi->h2("Execution environment"),"\n";
80 print "Script execution directory: <tt>",getcwd,"</tt><br>\n";
81 print "Invoking user id ",$(+0," name(getpwuid) <tt>".(getpwuid($())[0]."</tt><br>\n";
82 print "User home directory (getpwuid): <tt>".(getpwuid($())[7]."</tt><br>\n";
83 print "User home directory(environment): <tt>",$ENV{'HOME'},"</tt><br>\n";
84 print "Script name (\$0): <tt>$0</tt><br>\n";
85 print "Script filename (from <b>SCRIPT_FILENAME</b> env var)
86 <tt>$ENV{'SCRIPT_FILENAME'}</tt.<br>\n";
87 print "Document root: <tt>$ENV{'DOCUMENT_ROOT'}</tt><br>\n";
88 print "<b>LANG</b>: <tt>$ENV{LANG}</tt><br>\n";
89 print "<b>SERVER_ADDR</b>: <tt>$ENV{SERVER_ADDR}</tt><br>\n";
90 print "<b>PATH</b>: $ENV{'PATH'}<br>\n";
93 my ($sysname, $nodename, $release, $version, $machine) = POSIX::uname();
94 print "System: $sysname $release $version (from POSIX::uname)<br>\n";
97 print "System: `uname -a` (from OS uname command)<br>\n";
101 print "<br><b>Prerequistes for $module</b>:<br><blockquote>\n";
104 while (my ($mod,$needed_ver) = each %{$prereq{$module}}) {
105 if (exists $modver{$module}) {
106 $ver = $modver{$module};
108 eval "use $mod; \$ver=\$${mod}::VERSION;";
110 print "$mod : <font color=\"red\">not found</font><br>";
111 if (exists $prereq{$mod}) {
116 $modver{$mod} = $ver;
118 if ($ver < $needed_ver) {
119 print "$mod: <font color=\"red\">$ver</font> (need $needed_ver<br>\n";
121 print "$mod: $ver<br>\n";
124 print "</blockquote>\n";