怎样使 /var/ww/cgi-bin/ 下面的CGI 程序可以执行 /bin/ls 命令??

怎样使 /var/ww/cgi-bin/ 下面的CGI 程序可以执行 /bin/ls 命令??

CGI 程序很简单, 用 perl 编写 。运行也没有问题。

但是现在需要在 CGI 程序里面运行一些系统命令,也就是 /var/www/cgi-bin 目录以外的可执行程序,例如 ls, sort, sed 等等等等。
这些程序都放在 /bin 目录下面。尤其是 ls 还不能复制出来。

做了符号链接到 /var/www/cgi-bin 内部, 并且配置了这样的 directive 在 httpd.conf 文件里面,也不管用。 哪位达人帮帮忙吧!!!!


<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options All
    Order allow,deny
    Allow from all
</Directory>

<Directory "/bin">
    AllowOverride None
    Options +ExecCGI +FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>


操作系统是  Linux, RedHat Enterprise Linux。 Apache 是自带的, 2.0。
没有人知道吗??
可以直接运行啊。

#!/usr/bin/perl
##
##  printenv -- demo CGI program which just prints its environment
##

print "Content-type: text/plain; charset=iso-8859-1\n\n";
foreach $var (sort(keys(%ENV))) {
    $val = $ENV{$var};
    $val =~ s|\n|\\n|g;
    $val =~ s|"|\\"|g;
    print "${var}=\"${val}\"\n";
}

system("/bin/ls");

但是不推荐这样做。
这是一种很土的办法。

perl提供的regular expression功能不比sed awk弱。
ls 呢? 最初的数据从 ls 的输出里面来的啊。
#!/usr/bin/perl
##
##  printenv -- demo CGI program which just prints its environment
##

print "Content-type: text/plain; charset=iso-8859-1\n\n";
foreach $var (sort(keys(%ENV))) {
    $val = $ENV{$var};
    $val =~ s|\n|\\n|g;
    $val =~ s|"|\\"|g;
    print "${var}=\"${val}\"\n";
}

#my $result = `ls`;
my $result = `/bin/ls`;

print $result;

$result里面有你想要的输出。