Stas Bekman wrote:
But you also indicated that all versions before 1.99_17 did work w/o the package declaration, so that would be mean a behavior change.
First the results. I applied Philippe's patch, but no Reload messages showed up in the error log when changes were made to the Menus.pm module or other modules in the same 'Melior' namespace Menus.pm is in. Likewise, when changes were made to the Abracadabra.pm module (which is in the Apache namespace) nothing showed up in the error log. However changes made to the Abracadabra.pm module did show up on the webpages that were being served -- in contrast to changes made in the Menus.pm module which did not show up in the webpages being served..
Second, the mod_perl download version I was using was mod_perl-2.0.0-RC1 (I had segmentation faults with the XMas version so I used this version).
Third, I made a slight change from last time when we discussed this problem by plugging the Menus.pm module into the Melior namespace. I do not think this is causing the problem however because the Menus.pm module is in the Melior directory under /opt/prod/apache just as the Abracadabra.pm module is in the Apache directory under /opt/prod/apache. So both modules have their respective namespaces declared and are located in their correct directories -- but only changes made to the Abracadabra.pm module are showing up.
Finally, the changes I made in the Menus.pm module after Apache had started up were made in the enclosed stripped down version of the module and the changes made to this version did not show up at all.
Here is the relevant info that was requested:
1. Here are the entries from the httpd.conf file
LoadModule perl_module modules/mod_perl.so LoadModule php4_module modules/libphp4.so
PerlRequire "/opt/prod/apache/programs/startup.pl" PerlInitHandler Apache::Reload
2. Here is the stripped down version of the startup.pl file
#!/usr/local/bin/perl -wT use strict;
BEGIN {
use Apache2 ();
use lib "/opt/prod/apache";
use lib "/opt/prod/apache/nfs";
use lib "/opt/prod/apache/test-mck/mck-cgi";
use CGI::Carp qw(carpout);
open(LOG, ">>/opt/prod/apache/logs/error_log") or die "Unable to append to /opt/prod/apache/logs/error_log: $! [See the 'startup.pl' program - 1]\n";
carpout(*LOG);
}
# enable if the mod_perl 1.0 compatibility is needed
use Apache::compat ();
use ModPerl::Util (); #for CORE::GLOBAL::exit
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::RequestUtil ();
use Apache::Server ();
use Apache::ServerUtil ();
use Apache::Connection ();
use Apache::Log ();
use Apache::Reload ();
use APR::Table ();
use APR::URI ();
use ModPerl::RegistryLoader (); use Apache::Abracadabra (); use Melior::Menus ();
1;
3. Here is the stripped down version of the Menus.pm module. In this version, changes that are made to it after Apache has started up still don't show up in the webpages that are being served.
package Melior::Menus;
use strict; use locale; use POSIX 'locale_h'; setlocale(LC_CTYPE, "iso_8859_1");
sub menumain { my ($r,$my,$id) = @_; $$my{USERAGENT} = $r->headers_in->get('User-Agent') || ''; my (@field,$name); print "ab<BR>"; return 1; }
sub onepagemain { my ($r,$my) = @_; $$my{USERAGENT} = $r->headers_in->get('User-Agent') || ''; print "b<BR>"; return 1; }
sub menutop { my ($r,$my) = @_; $$my{USERAGENT} = $r->headers_in->get('User-Agent') || ''; print "c<BR>"; return 1;
}
sub menublank { my ($r,$my,$id) = @_; $id ||= 0; print "d<BR>"; return 1; }
sub menuleft { my ($r,$my,$hocuspocus,$id) = @_; $$my{USERAGENT} = $r->headers_in->get('User-Agent') || ''; print "e<BR>"; return 1; }
sub deliveries { my ($my,$id) = @_; print "f<BR>"; }
sub menusave { my ($my) = @_; print "g<BR>"; }
sub user_agency { my ($r,$my) = @_; print "h<BR>"; }
sub altogether { my ($my) = @_; print "i<BR>";
}
sub layering { my ($my,$id) = @_; print "j<BR>"; }
sub content_handler { my ($r,$my,$id) = @_; print "k<BR>"; return; }
1;