http://www.perlmonks.org?node_id=559546

msk_0984 has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks

It was also great help and i was also learning a lot from the point i hav joined into this group.

I am presntly working with CGI , Where in i am trying to get the List Of all The Installed Modules in the System .I have wrtten a program and i am getting the output in the Terminal perfectly giving the list of all installed modules. But when i run it in Mozilla browser i am not getting the Output on the Browser And i hav also set all the permission and also started all services all other programs in the same dir are running perfectly.

Update :The Ouput on the Browser is

Software error: "Can't cd to:" If i use  use CGI::Carp qw(fatalsToBrowser warningsToBrowser); Any help wld be appreciated i am struggling for this one. And here is my code

#!/usr/bin/perl use strict; use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser warningsToBrowser); use ExtUtils::Installed; my (@modules, @versions) ; my $inst = ExtUtils::Installed->new(); foreach my $module ($inst->modules()) { my $version = $inst->version($module) || "???" ; push ( @modules,$module ); push (@versions,$version); } my $cgi=new CGI; print $cgi->header; print $cgi->start_html( -title=>"List of Modules", -bgcolor=>"lightyellow" ); print $cgi->start_form(-name=>'modules', -action=>'list_modules.cgi'); print $cgi->center($cgi->h1($cgi->u("<i>List of Installed Modules< +/i>"))); for (my $i=0 ; $i<= $#modules ; $i++) { print $cgi->b(" $versions[$i] " ); print $cgi->b(" $modules[$i] <br> "); } print $cgi->end_form; print $cgi->end_html;
Thanks in Advance Sushil

Replies are listed 'Best First'.
Re: Why is the Browser Not printing CGI -Output
by Gilimanjaro (Hermit) on Jul 06, 2006 at 12:06 UTC

    Do you know what type of server your script is running on?

    The "can't cd to" message seems to indicate that your script is running as a user that doesn't have the proper permissions to either run the script or more probably browse the directory structure the modules are is...

    You might want to move the code that creates the CGI object and prints the headers and start of the table before you're scanning for-loop. That way you'll at least know if *any* part of your script is running.

    Update: In fact, the error you're describing seems to be generated by File::Find. which is used by ExtUtils::Installed to traverse the module directories. So it indeed seems that your script is running, but the webserver-user (as which your script runs) doesn't have permissions to traverse the directories where perl modules are stored on your system.

    Actually, if the error doesn't specify what directory it can't search that's probably because it doesn't even know where to search. This information is obtained by ExtUtils::Installed from the module Config. So you may want to check if your webuser can properly access Config.

      Actually when i am commenting all the lines which belong to the module i get the output that is jus the wite screen with Heading The

      List of Installed modules

      And coming to the server which actually iam the root user and i have changed the user and run the program i get the output in Terminal but not in Browser.

        In that case, you'll want to make sure that the account that is used by the webserver to run the script has the proper permissions. To have your script tell you what account that is, insert into your script:

        printf "user/group:%s/%s</br>\n",scalar getpwuid( $< ), scalar getgrgi +d( $( );

        This user needs to have access to the directories your system uses to store it's perl-modules.

      Yes sir i hope ur right.

      But when i have tried to install this module from CPAN when i clicked install this module i got an error

      Object not found! The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error. Error 404 So i have got it from Home page. Perl Modules And when i installed it i did not get any error. So any way z i shall try it out. Thanks for ur prompt reply

      Sushil

        Config is not a CPAN module, but one that gets installed together with Perl (I think). It provides programs with information about the environment they're running in.

        The proper solution to your problem is to ensure the account that is used by the webserver to run scripts has the proper permissions... It would help if you could tell me what operating system and/or distribution you're running on...

Re: Why is the Browser Not printing CGI -Output
by Moron (Curate) on Jul 06, 2006 at 12:08 UTC
    The browser expects paths to be based on whatever file:/// is configured to be (configuration varies for different kinds of webservers), this being unlikely to be the current working directory.

    -M

    Free your mind