-f文件测试运算符是否在mod_perl中工作?

Rya*_*zel 1 perl mod-perl

我正在尝试使用天神模块,但它失败了,因为它无法找到模板文件,但它存在.我已经在模块中添加了一些调试语句,但它没有通过

return $filepath if (-f $filepath);
Run Code Online (Sandbox Code Playgroud)

即使$ filepath是正确的.我尝试过一个独立的脚本,它工作正常但是当我将它复制到mod_perl脚本时它失败了.有任何想法吗?

$ filepath是一个完整的绝对路径:/something/another/dir/2/filename.plhtml

这是模块的功能.注意我的"调试"...它打印到文件的正确路径777但它从不打印YES.

sub find_template_file {
my ($this, $filename) = @_;

my $path = $this->{path};
if ($path) {
    my $sep = $^O eq 'MSWin32' ? '\\\\' : '/';
    foreach my $dirname (@$path) {
        my $filepath = $dirname . $sep . $filename;
        print STDERR "--$filepath--\n";
        if (-f $filepath){
            print STDERR "--- YES ---\n\n";
        }
        return $filepath if (-f $filepath);
    }
} else {
    return $filename if (-f $filename);
}
my $s = $path ? ("['" . join("','", @$path) . "']") : '[]';
die "Tenjin::Engine: $filename not found (path=$s).";
Run Code Online (Sandbox Code Playgroud)

}

失败了

天神::引擎:未找到index.plhtml(path = ['/ var/2.0/templates/search']).在/usr/lib/perl5/site_perl/5.8.8/Tenjin/Engine.pm第56行.\n

mob*_*mob 5

Apache进程还需要在每个子目录上执行读取和执行访问,直到完整路径.(如果涉及符号链接,确定访问的内容将更加棘手).

如果您可以在Web服务器上调试脚本,您可能希望让Perl向您发送错误消息:

if (! -f $filename) {
    open(ACK, "<", $filename);
    print STDERR "Couldn't open $filename because of: $!\n";
}
Run Code Online (Sandbox Code Playgroud)

  • 只执行准确的访问. (3认同)