Chinaunix

标题: Perl作为CGI时候无法获取环境变量? [打印本页]

作者: maorui    时间: 2010-09-09 18:31
标题: Perl作为CGI时候无法获取环境变量?
perl -e "my $ret=`echo \$HOME`; print $ret;"
在命令行执行没有问题,但是作为CGI执行就什么也没有了。

如果是改成显示PATH,结果也不是我想要的。似乎CGI执行时候有自己的一套环境?

我希望显示的是Apache User账户所使用的环境参数。

有什么需要注意的,或者解决办法吗?
作者: 兰花仙子    时间: 2010-09-09 18:38
%ENV
作者: maorui    时间: 2010-09-09 18:45
试过$ENV{'HOME'},结果一样。
作者: DQP    时间: 2010-09-09 20:57
账户不一样吧
作者: maorui    时间: 2010-09-10 09:46
什么账户?似乎执行CGI的账户和apache user账户不是同一个shell。
作者: iamlimeng    时间: 2010-09-10 10:01
我有一个CGI环境探测器,供你参考:

http://www.class22.net/cgi-bin/env.pl
作者: maorui    时间: 2010-09-10 13:44
谢谢!能把程序打包传上来吗?另外,你这里也没有显示$HOME。
作者: iamlimeng    时间: 2010-09-10 15:01
  1. #!/usr/bin/perl

  2. print "Content-type: text/plain; charset=iso-8859-1\n\n";
  3. foreach $var (sort(keys(%ENV))) {
  4.     $val = $ENV{$var};
  5.     $val =~ s|\n|\\n|g;
  6.     $val =~ s|"|\\"|g;
  7.     print "${var} = \"${val}\"<br>\n";
  8. }
复制代码

作者: ulmer    时间: 2010-09-12 02:56
perl -e "my $ret=`echo \$HOME`; print $ret;"
在命令行执行没有问题,但是作为CGI执行就什么也没有了。
...
maorui 发表于 2010-09-09 18:31


Hi,

running perl in shell and in Apache, the 环境变量 is different!
Under shell, perl gets shell enviroment variables.
In Apache, perl as CGI gets Apache environment variables. Pls refer to Apache document => SetEnv.
If you want to set $HONE as an Apache ENV, you should configurate apache.
Apache config. Syntax:
SetEnv <ENV_NAME> = <ENV_VALUE>

actually your question is belong to apache, not perl!
作者: maorui    时间: 2010-09-16 09:54
got it & thx!
作者: flw    时间: 2010-09-16 11:24
perl -e 的时候最外层还是用单引号吧。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2