2009-09-13 3 views
1

Template Toolkit을 사용하여 Catalyst 프레임 워크를 작동 시키려고하고 있는데 Template::Provider과 관련된 문제가 있습니다. 이 문제는 stat 번으로 전화를 걸기 위해 격리되었습니다. Template::Provider::_init에서는 stat에 대한 호출이 올바르게 작동하지만 다른 함수에서는 stat return []을 호출합니다. Template::Provider이 이상한 캐싱 작업을하고있는 것 같지만, 무엇을 알아 내지 못하는 것 같습니다. 누구든지 아이디어가 있습니까?내 Catalyst 응용 프로그램에서 내 Template Toolkit 파일을 읽을 수없는 이유는 무엇입니까?

편집 : 나는 아파치/mod_perl을에 촉매 개발 서버를 이동하기 위해 노력하고있어

:는 A는 자세한 내용을 비트. 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; 
} 

꽤 많은 사람이 여기에 설명하는 동일한 문제가 : 여기 내 설정의 디버그 덤프 당신의 파일이 /home/myuser/pathtosite 디렉토리에 실제로 (그리고 하위 디렉토리)입니다 가정 http://www.gossamer-threads.com/lists/catalyst/users/14888

답변

4

가이 보인다 Catalyst 프로세스가 파일을 읽을 수 없다는 문제가 발생할 수 있습니다. SELinux 환경에서 실행중인 경우 보안 컨텍스트 (예 : 보안 컨텍스트 유형 httpd_sys_content_t)와 관련 될 수도 있습니다.

템플릿을 렌더링하기 전에 먼저 파일을 Catalyst 프로세스에서 볼 수 있도록 디버깅 할 수 있습니까?

+0

거의 사실상 - 실제로 Linux에서 시스템 Apache 프로세스를 사용하는 경우 사용자가 실행하는 것이 아니라 www_user로 실행되고 파일에 액세스 할 수 없습니다. 자체 실행 프로세스로 개발하는 것이 더 효과적이지만, 루트 만 낮은 포트에 액세스 할 수 있기 때문에 높은 포트 (1024+)로 구성해야합니다. – ijw

+3

고마워요. - 이것이 정답이었습니다. 허가 문제 였어. 앞으로 이것을 읽는 사람을위한 팁 : strace를 사용하면 이러한 종류의 디버깅에 매우 유용합니다. 그것은 프로세스가 만드는 시스템 호출을 보여 주며 나의 경우 아파치가 액세스 거부 오류와 함께 열려고하는 파일을 보여줍니다. ('sudo strace httpd 2> & 1 | grep hello.tt'이 트릭을했습니다) –

관련 문제