将 Apache::Session::Memcached 与 MasonX::Request::WithApacheSession 结合使用

发布于 2024-07-26 00:13:58 字数 2378 浏览 6 评论 0 原文

我正在尝试使用 Apache >HTML::Mason 我正在使用的项目 MasonX::Request::WithApacheSession 来处理我的会话。 不幸的是,当我插入 Memcached 模块而不是 MySQL 模块时,Apache 将无法启动。 我的自定义处理程序看起来像这样(这里和那里有一些片段):

my $ah = HTML::Mason::ApacheHandler->new (
    comp_root                   =>  $ENV{HTDOCS},
    data_dir                    =>  $data_dir,
    request_class               =>  'MasonX::Request::WithApacheSession',
    session_use_cookie          =>  0,
    args_method                 =>  "mod_perl",
    session_args_param          =>  'session_id',
    session_class               =>  'Apache::Session::Memcached',
    session_Servers             =>  '127.0.0.1:20000',
    session_Readonly            =>  0,
    session_Debug               =>  1,
    session_cookie_domain       =>  $CONF->{global}->{site_name},
    session_cookie_expires      =>  "session",
    session_allow_invalid_id    =>  0,                                          
    );   

我遇到的问题是特定于 Memcached 的 session_* 参数没有传递到 Apache::Session::Memcached 类似文档说应该。 这会导致此错误:

The following parameter was passed in the call to HTML::Mason::ApacheHandler->new()
but was not listed in the validation options: session_Servers

现在,我已经将所有 3 个大写参数替换为小写,但无济于事。 以及文档对于 Apache::Session:: Memcached 将它们列为大写。

非常感谢您的帮助。

I'm trying to use Apache::Session::Memcached in an HTML::Mason project where I'm using MasonX::Request::WithApacheSession to handle my sessions. Unfortunately Apache will not launch when I plug in the Memcached module instead of the MySQL one. My custom handler looks something like this (a few snips here and there):

my $ah = HTML::Mason::ApacheHandler->new (
    comp_root                   =>  $ENV{HTDOCS},
    data_dir                    =>  $data_dir,
    request_class               =>  'MasonX::Request::WithApacheSession',
    session_use_cookie          =>  0,
    args_method                 =>  "mod_perl",
    session_args_param          =>  'session_id',
    session_class               =>  'Apache::Session::Memcached',
    session_Servers             =>  '127.0.0.1:20000',
    session_Readonly            =>  0,
    session_Debug               =>  1,
    session_cookie_domain       =>  $CONF->{global}->{site_name},
    session_cookie_expires      =>  "session",
    session_allow_invalid_id    =>  0,                                          
    );   

The problem I'm running into is that the session_* paramaters specific to Memcached are not being passed through to Apache::Session::Memcached like the docs say it should. This results in this error:

The following parameter was passed in the call to HTML::Mason::ApacheHandler->new()
but was not listed in the validation options: session_Servers

Now, I have gone through and swapped all of the 3 upper case arguments to lower case, to no avail. And the docs for Apache::Session::Memcached list them as upper case.

Thanks a ton for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘿看小鸭子会跑 2024-08-02 00:13:58

看起来您需要使用 Apache::Session::Wrapper 注册 Apache::Session::Memcached,按照 http://search.cpan.org/perldoc/Apache::Session::Wrapper#REGISTERING_CLASSES 就像这样(代码由 Jack M. 提供):

Apache::Session::Wrapper::->RegisterClass(
    'name' => 'Apache::Session::Memcached',
    'required' => [ [ 'Servers' ], ],
    'optional' => [ 'NoRehash', 'Readonly', 'Debug', 'CompressThreshold', ],
);

It looks like you need to register Apache::Session::Memcached with Apache::Session::Wrapper, following the instructions at http://search.cpan.org/perldoc/Apache::Session::Wrapper#REGISTERING_CLASSES like so (code courtesy Jack M.):

Apache::Session::Wrapper::->RegisterClass(
    'name' => 'Apache::Session::Memcached',
    'required' => [ [ 'Servers' ], ],
    'optional' => [ 'NoRehash', 'Readonly', 'Debug', 'CompressThreshold', ],
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文