원래 Catalyst 5.7 용으로 개발 된 Catalyst 응용 프로그램을 가지고 있고 몇 년 전에 Catalyst 5.8로 업데이트했습니다.
이제 우리는 Catalyst 5.9로 업그레이드하려고하는데, $ c-> uri_for()를 호출하면 적당한 결과를 얻지 못하지만, standalone 디버그 서버에서 실행될 때가 아니라 lighttpd에서 실행될 때만 .
나는 Root.pm
제외한 모든 응용 프로그램 컨트롤러를 제거했으며, 하나의 하위로 설정되어있다 : 나는 독립 실행 형 디버그 서버에서 코드를 실행하면
package DCWeb::Controller::Root;
use strict;
use warnings;
use 5.10.0;
use Moose;
use namespace::autoclean;
BEGIN { extends 'Catalyst::Controller' }
__PACKAGE__->config->{namespace} = '';
sub foo :Path {
my ($self, $c) = @_;
$c->log->debug("Base: ".$c->req->base);
}
1;
, 나는 다음과 같은 얻을 디버그 출력 (수정) :
Jul 9 15:09:51 dc8 dc-web: Base: http://localhost:3000/
을 나는 FastCGI를 (잘못된)와 lighttpd를 통해 동일한 코드를 실행하면 :
Jul 9 15:10:25 dc8 dc-web: Base: http://localhost:8080/foo/
,
데비안 wheezy의 Catalyst 5.90015-1을 사용하고 있습니다. 최신 버전으로 업그레이드하려고 시도했지만 일부 종속 항목에는 최신 버전의 perl이 필요했습니다. 또한, Changelog은 (분명히) 관련 uri_for 픽스를 언급하지는 않습니다.
따라서 lighttpd와 Catalyst 사이에 일종의 손상이 있다고 가정합니다. 하지만 여기서 어디로 가야합니까?