У нас есть старое приложение 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/
Я использую Catalyst 5.90015-1 от Debian wheezy. Я попытался обновиться до последней версии, но для некоторых зависимостей требовалась более новая версия perl. Кроме того, журнал изменений, по-видимому, не упоминает никаких (очевидно, ) соответствующие исправления uri_for.
Поэтому я предполагаю, что между lighttpd и Catalyst есть какая-то поломка. Но куда мне идти отсюда?