in reply to Re^2: Access system ENV variables from within CGI Script
in thread Access system ENV variables from within CGI Script

You will need to debug the output from the `env` command then. Compare what the script outputs when it is run from your shell account. Compare what `env` returns when run from your shell account to the output from the CGI. Take out all intermediaries. Eliminate all differences. Find out where the two scripts/environments differ.

Most likely, from your .profile something else gets run. Maybe only if there is a terminal connected. It's hard to tell without seeing your code and the relevant parts of the .profile.

Replies are listed 'Best First'.
Re^4: Access system ENV variables from within CGI Script
by Anonymous Monk on Oct 12, 2007 at 12:33 UTC
    I notice the function calls `echo env |...`, when I do echo env from the command line I get nothing, env by iteself works. An example of a line from the .profile is: TESTUSERS="test@unix.company.com"; export TESTUSERS. This is one of the variables that tillys method does not pick up. Thanks again for your help
        here is my test code:
        #!/opt/appenv/perl/bin/perl use strict; use warnings; use CGI; use Data::Dumper; my $q = new CGI; print $q->header(); my %ENV2; %ENV2 = (%ENV2, get_login_env()); print Dumper(\%ENV2); sub get_login_env { local %ENV; my $shell= '/usr/bin/ksh'; #shift || (getpwuid($<))[8]; my $env = `echo env | /opt/appenv/perl/bin/perl -e 'exec {"$shell"} +-sh'`; if (wantarray) { my @pieces = ($env =~ m/^(.*?)=((?:[^\n\\]|\\.|\\\n)*)/gm); s/\\(.)/$1/g foreach @pieces; return @pieces; } else { return $env; } }
        The only things I have changed from Tillys example is the $shell, since the value it was coming up with was /bin/ksh and not /usr/bin/ksh (since which ksh returns /usr/bin/ksh). And the path to Perl on the machine /opt/appenv/perl/bin/perl. I am starting to follow your comments about an instance of /usr/bin/ksh calling echo env, but I am curious as to why we are only getting few results via the above method. Any advice on how to begin some debugging would help lots. TIA