我们有一个旧的 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/
当我使用 FastCGI 通过 lighttpd 运行相同的代码时(不正确):
Jul 9 15:10:25 dc8 dc-web: Base: http://localhost:8080/foo/
我正在使用来自 Debian wheezy 的 Catalyst 5.90015-1。我尝试升级到最新版本,但某些依赖项需要更新版本的 perl。此外,变更日志似乎没有提到任何(显然)相关的 uri_for 修复。
因此,我假设 lighttpd 和 Catalyst 之间存在某种破坏。但我从这里去哪里?