我一直在网上搜索并尝试不同的代码变体,以便最终用户可以通过Web界面查看所有服务器备份日志,并选择其中任何一个来在浏览器中读取日志。我正在研究RHEL 6的测试系统。有dir" / var / log / vista / stcr2tsvr /"存储备份日志的位置,其中包含文件。我甚至chmod 755所有的dirs。和文件(仅供测试)当我从浏览器调用脚本时,我得到我想要显示为超链接的文件。有一个问题我会点击链接,但是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;
答案 0 :(得分:-1)
很高兴去!我在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;