Perl在DIR中显示文件,在浏览器中链接和显示



我一直在搜索网络并尝试不同的代码变体,以便最终用户可以通过网络界面查看所有服务器备份日志,并选择其中任何一个在浏览器中读取日志。我正在开发一个测试系统,它是RHEL 6。有一个目录"/var/log/vista/stcr2tsvr/"存储备份日志,其中有文件。我甚至有chmod 755所有的目录。和文件(仅用于测试)当我从浏览器调用脚本时,我会得到我想要显示为超链接的文件。有一个问题,我会点击链接,但perl在cgi-bin-DIR中查找,所以我强迫它在"/var/log/vista/stcr2tsvr/"中查找

    $list->a({-href=>"/var/log/vista/stcr2tsvr/$file"}),

做哪个更干净

    $list->a({-href=>$fileDir.$file}),    

这里曾经是这样的

    $list->a({-href=>$file}), 

但正如我所说,将在cgi-bin中查找,而不是在日志DIR.中查找

所以现在超链接引用了正确的DIR和文件,但当单击时,即使文件在那里,我仍然找不到文件。任何帮助都会很棒!没有想法:(

    #!/usr/bin/perl
    use strict;
    use CGI;
    use warnings;
    my $list = new CGI;
    my $fileDir = '/var/log/vista/stcr2tsvr/';
    my @files;
    print $fileDir;

    opendir DIR, "$fileDir";
    @files = grep(/.log$/,readdir(DIR)); 

    closedir DIR;
    print $list->header("text/html"),
    $list->start_html("Files in $fileDir"),
    $list->p("These are the files in $fileDir");
    foreach my $file (@files) {
    print $list->p(
    $list->a({-href=>$fileDir.$file}),
    $file)
    }
    print $list->end_html;

很好!我在httpd.conf中添加了以下内容:

Alias /logs/ "/var/log/vista/stcr2tsvr/"
<Directory "/var/log/vista/stcr2tsvr/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

并更改代码以反映别名

#!/usr/bin/perl
use strict;
use CGI;
my $list = new CGI;
my $fileDir = "/var/log/vista/stcr2tsvr/";
my $alias = "/logs/";
my @files;
print $fileDir;
opendir DIR, "$fileDir";
@files = grep(/.log$/,readdir(DIR)); ## Example file to read 2015
+0210-dubr3psvr-backup.log
closedir DIR;
print $list->header("text/html"),
  $list->start_html("Files in $fileDir"),
  $list->p("These are the files in $fileDir");
foreach my $file (@files) {
print $list->p(
        $list->a({-href=>$alias.$file},
        $file)
        );
}
print $list->end_html;

最新更新