我們有一箇舊的Catalyst應用程序,最初是爲Catalyst 5.7開發的,幾年前更新到Catalyst 5.8。
現在我們試圖升級到Catalyst 5.9,現在調用$ c-> uri_for()並沒有給出合理的結果,但是隻有在從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/
當我通過lighttpd的FastCGI的(不正確)運行相同的代碼:
Jul 9 15:10:25 dc8 dc-web: Base: http://localhost:8080/foo/
我使用Debian wheezy的Catalyst 5.90015-1。我試圖升級到最新版本,但是一些依賴需要更新版本的perl。此外,Changelog似乎沒有提及任何(顯然)相關的uri_for修復。
因此,我假設lighttpd和Catalyst之間存在某種破壞。但我從哪裏去?