You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Carl Brewer <ca...@bl.echidna.id.au> on 2004/10/26 05:36:48 UTC

Re: [mp2] mason and not using compat? - Can't locate object method "server_root_relative"

Philippe M. Chiasson wrote:
> Carl Brewer wrote:
> 

> I believe there is a CPAN module that makes it a bit cleaner and
> less hack-ish:
> 
> MasonX::Apache2Handler
> http://search.cpan.org/dist/MasonX-Apache2Handler

Thanks Philippe, I've found that now and built a NetBSD pkg for it.

But, I'm having trouble using it.  I really want to stay clear of
mp1, but am having trouble getting this handler to work.

I keep seeing this :

[Tue Oct 26 13:28:53 2004] [error] [client 211.26.251.34] Can't locate 
object method "server_root_relative" via package "Apache::ServerRec" at 
/usr/pkg/lib/perl5/site_perl/5.8.4/MasonX/Apache2Handler.pm line 618.\n


My setup at the moment (which is very fluid as I try things to try and
fix the problem!) :

<VirtualHost 203.6.241.155>
     DocumentRoot /home/benfab/htdocs
     ServerName benfab.bl.echidna.id.au

     ErrorLog /home/benfab/logs/error_log
     CustomLog /home/benfab/logs/access_log common

     Alias /admin/ "/home/benfab/admin/"

     # these four lines apply to Apache2+mod_perl2 only: {{{
     PerlSetVar MasonArgsMethod CGI
     #PerlModule Apache2 Apache::compat
     PerlModule Apache2
     PerlRequire "/home/benfab/lib/startup.pl"

     #PerlModule Apache::Reload
     #PerlModule Apache::Request
     #PerlModule Apache::Cookie
     #PerlInitHandler Apache::Reload
     #PerlSetVar ReloadAll Off

     #PerlSetVar _MasonUser www
     #PerlSetVar _MasonGroup www
     #PerlSetVar _MasonDefaultDocumentRoot "/home/benfab/htdocs"

     #RewriteEngine On
     #RewriteRule ^(.*)/$ $1/index.html

     <LocationMatch "(\.html|\.txt|\.pl)$">
       SetHandler perl-script
       #PerlHandler HTML::Mason::ApacheHandler
       PerlResponseHandler MasonX::Apache2Handler
     </LocationMatch>
     <LocationMatch "(\.m(html|txt|pl)|dhandler|autohandler)$">
       SetHandler perl-script
       #PerlInitHandler Apache::Constants::NOT_FOUND
     </LocationMatch>

     <Location />
         #SetHandler perl-script
         #PerlHandler HTML::Mason::ApacheHandler
         SetOutputFilter DEFLATE
     </Location>
</VirtualHost>


the startup.pl script is :
# http://perl.apache.org/docs/2.0/user/config/config.html

use Apache2 ();
   # /usr/pkg/lib/perl5/site_perl/5.8.4/HTML/Mason/ApacheHandler.pm
   use lib qw(/home/benfab/lib 
/usr/pkg/lib/perl5/site_perl/5.8.4/HTML/Mason/);

   use ModPerl::Util (); #for CORE::GLOBAL::exit

   use Apache::RequestRec ();
   use Apache::RequestIO ();
   use Apache::RequestUtil ();

   use Apache::ServerRec ();
   use Apache::ServerUtil ();
   use Apache::Connection ();
   use Apache::Log ();

   use APR::Table ();
   use APR::Pool ();

   use ModPerl::Registry ();

   use Apache::Const -compile => ':common';
   use APR::Const -compile => ':common';

1;


 From googling around, the error message is something to
do with mp2 in compat mode, which I'm specifically trying to
eliminate and avoid - and as my test page is simply this :

/home/benfab/htdocs/index.html
<% 2+2 %>

I'm not using anything that should or could call it?

any suggestions?

Carl



-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [mp2] mason and not using compat? - Can't locate object method "server_root_relative"

Posted by Carl Brewer <ca...@bl.echidna.id.au>.
Randy Kobes wrote:

> From the mp2 Changes file, ($r|$c|$s)->server_root_relative
> has been removed. There is a suggested alternative, which
> for MasonX::Apache2Handler translates to (untested):
> ===============================================================
> --- Apache2Handler.pm~	Sun Apr 11 17:02:16 2004
> +++ Apache2Handler.pm	Mon Oct 25 22:47:12 2004
> @@ -615,7 +615,7 @@
>      if (exists $allowed_params->{data_dir} and not exists $params{data_dir})
>      {
>  	# constructs path to <server root>/mason
> -	my $def = $defaults{data_dir} = Apache->server->server_root_relative('mason');
> +        my $def = $defaults{data_dir} = File::Spec->catfile(Apache::ServerUtil::server_root, 'mason');
>  	param_error "Default data_dir (MasonDataDir) '$def' must be an absolute path"
>  	    unless File::Spec->file_name_is_absolute($def);
> 
> =========================================================================

Thanks Randy,

Has this been submitted to Beau Cox by you or anyone?

Carl




-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [mp2] mason and not using compat? - Can't locate object method "server_root_relative"

Posted by Carl Brewer <ca...@bl.echidna.id.au>.
Randy Kobes wrote:

> From the mp2 Changes file, ($r|$c|$s)->server_root_relative
> has been removed. There is a suggested alternative, which
> for MasonX::Apache2Handler translates to (untested):
> ===============================================================
> --- Apache2Handler.pm~	Sun Apr 11 17:02:16 2004
> +++ Apache2Handler.pm	Mon Oct 25 22:47:12 2004
> @@ -615,7 +615,7 @@
>      if (exists $allowed_params->{data_dir} and not exists $params{data_dir})
>      {
>  	# constructs path to <server root>/mason
> -	my $def = $defaults{data_dir} = Apache->server->server_root_relative('mason');
> +        my $def = $defaults{data_dir} = File::Spec->catfile(Apache::ServerUtil::server_root, 'mason');
>  	param_error "Default data_dir (MasonDataDir) '$def' must be an absolute path"
>  	    unless File::Spec->file_name_is_absolute($def);
> 
> =========================================================================
> 

That works, btw.  Thankyou.  Now if Beau can update
the Apache2Handler, it'll all be good!

Carl




-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html


Re: [mp2] mason and not using compat? - Can't locate object method "server_root_relative"

Posted by Randy Kobes <ra...@theoryx5.uwinnipeg.ca>.
On Tue, 26 Oct 2004, Carl Brewer wrote:

> Philippe M. Chiasson wrote:
> > Carl Brewer wrote:
> >
>
> > I believe there is a CPAN module that makes it a bit cleaner and
> > less hack-ish:
> >
> > MasonX::Apache2Handler
> > http://search.cpan.org/dist/MasonX-Apache2Handler
>
> Thanks Philippe, I've found that now and built a NetBSD pkg for it.
>
> But, I'm having trouble using it.  I really want to stay clear of
> mp1, but am having trouble getting this handler to work.
>
> I keep seeing this :
>
> [Tue Oct 26 13:28:53 2004] [error] [client 211.26.251.34] Can't locate
> object method "server_root_relative" via package "Apache::ServerRec" at
> /usr/pkg/lib/perl5/site_perl/5.8.4/MasonX/Apache2Handler.pm line 618.\n

>From the mp2 Changes file, ($r|$c|$s)->server_root_relative
has been removed. There is a suggested alternative, which
for MasonX::Apache2Handler translates to (untested):
===============================================================
--- Apache2Handler.pm~	Sun Apr 11 17:02:16 2004
+++ Apache2Handler.pm	Mon Oct 25 22:47:12 2004
@@ -615,7 +615,7 @@
     if (exists $allowed_params->{data_dir} and not exists $params{data_dir})
     {
 	# constructs path to <server root>/mason
-	my $def = $defaults{data_dir} = Apache->server->server_root_relative('mason');
+        my $def = $defaults{data_dir} = File::Spec->catfile(Apache::ServerUtil::server_root, 'mason');
 	param_error "Default data_dir (MasonDataDir) '$def' must be an absolute path"
 	    unless File::Spec->file_name_is_absolute($def);

=========================================================================

-- 
best regards,
randy kobes

-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html