我正在尝试使用Catalyst
使Template Toolkit
框架正常工作,而我遇到Template::Provider
的问题。我已将此问题隔离到stat
的来电。在Template::Provider::_init
中,对stat
的调用正常工作,但在其他函数中调用stat return []。似乎Template::Provider
正在做一些奇怪的缓存,但我无法弄清楚是什么。有人有什么想法吗?
编辑:更详细一点:
我正在尝试从Catalyst开发服务器迁移到Apache / mod_perl。我收到Couldn't render template "file error - mytemplate.tt: not found"
错误。这是我的配置的调试转储:
Config
do {
my $a = {
"Action::RenderView" => {
ignore_classes => [
"DBIx::Class::ResultSource::Table",
"DBIx::Class::ResultSourceHandle",
"DateTime",
],
scrubber_func => sub { "???" },
},
"Plugin::ConfigLoader" => {},
home => "/home/myuser/pathtosite",
name => "Stream",
root => bless({
dirs => ["", "home", "myuser", "pathtosite"],
file_spec_class => undef,
volume => "",
}, "Path::Class::Dir"),
static => {
debug => 1,
dirs => [],
ignore_dirs => [],
ignore_extensions => ["tmpl", "tt", "tt2", "html", "xhtml"],
include_path => ['fix'],
mime_types => {},
mime_types_obj => bless({}, "MIME::Types"),
no_logs => 1,
},
};
$a->{static}{include_path}[0] = $a->{root};
$a;
}
与此处描述的完全相同的问题:http://www.gossamer-threads.com/lists/catalyst/users/14888
答案 0 :(得分:4)
假设您的文件实际上位于/home/myuser/pathtosite
目录(而不是子目录)中,这似乎可能是Catalyst进程无法读取文件的perimssion问题。如果您在SELinux环境中运行,它也可能与安全上下文有关(例如,安全上下文类型httpd_sys_content_t
)。
在尝试渲染模板之前,您是否可以进行一些调试以确保文件在Catalyst进程中可见?