mod_perl nie pasuje do Carp.pm i Cookie.pm

Paweł Gołaszewski blues w pld-linux.org
Wto, 7 Cze 2005, 10:41:06 CEST


Jest problem z nowym mod_perl-em... Chodzi o to, że aplikacje, które 
używają sobie Carp.pm mają poważny problem, gdyż ten moduł nie jest 
dostosowany do nowego mod_perl-a.

    if ($mod_perl::VERSION >= 1.99) {
      $mod_perl = 2;
      require Apache::RequestRec;
      require Apache::RequestIO;
      require Apache::RequestUtil;
      require APR::Pool;
      require ModPerl::Util;
      require Apache::Response;
    }
    my $r = Apache->request;


zmieniłem sobie na:

    if ($mod_perl::VERSION >= 1.99) {
      $mod_perl = 2;
      require Apache2::RequestRec;
      require Apache2::RequestIO;
      require Apache2::RequestUtil;
      require APR::Pool;
      require ModPerl::Util;
      require Apache2::Response;
    }
    my $r = Apache2::RequestUtil->request;


Druga rzecz, która musi być zmieniona to w CGI/Cookie.pm:
s/Apache::RequestUtil;/Apache2::RequestUtil;/


Patch na to:
--- ./Cookie.pm.org     2005-02-19 11:41:46.000000000 +0100
+++ ./Cookie.pm 2005-06-07 10:33:46.000000000 +0200
@@ -27,7 +27,7 @@
   if (defined $mod_perl::VERSION) {
     if ($mod_perl::VERSION >= 1.99) {
       $MOD_PERL = 2;
-      require Apache::RequestUtil;
+      require Apache2::RequestUtil;
     } else {
       $MOD_PERL = 1;
       require Apache;
--- ./Carp.pm.org       2005-06-07 10:36:51.000000000 +0200
+++ ./Carp.pm   2005-06-07 10:32:26.000000000 +0200
@@ -468,14 +468,15 @@
     require mod_perl;
     if ($mod_perl::VERSION >= 1.99) {
       $mod_perl = 2;
-      require Apache::RequestRec;
-      require Apache::RequestIO;
-      require Apache::RequestUtil;
+      require Apache2::RequestRec;
+      require Apache2::RequestIO;
+      require Apache2::RequestUtil;
       require APR::Pool;
       require ModPerl::Util;
-      require Apache::Response;
+      require Apache2::Response;
     }
-    my $r = Apache->request;
+    #my $r = Apache2->request;
+    my $r = Apache2::RequestUtil->request;
     # If bytes have already been sent, then
     # we print the message out directly.
     # Otherwise we make a custom error



Nie chciałbym w tym grzebać, bo nie za bardzo mam ochotę dotykać rzeczy, 
których konstrukcji nie rozumiem (vide: perl.spec). Proszę o dodanie tego, 
bo inaczej mod_perl ma poważne wady (to dosyć popularne moduły...).

-- 
pozdr.  Paweł Gołaszewski          jid:blues<at>jabber<dot>gda<dot>pl
--------------------------------------------------------------------------
If you think of MS-DOS as mono, and Windows as stereo, then Linux is Dolby
Pro-Logic Surround Sound with Bass Boost and all the music is free.


Więcej informacji o liście dyskusyjnej pld-devel-pl