Ron Savage wrote:
> Definitely use Apache::Reload. Here's a bit from my httpd.conf:

First, here is code that works, but requires me to restart/graceful Apache
whenever I make changes to my C::A derived module:

<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat conf/vhost.conf
# $Id: vhost.conf,v 1.1 2005/11/27 07:18:45 dpchrist Exp $
#
# Apache configuration settings for hdwf.holgerdanske.com.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>

<VirtualHost 192.168.254.22>
    ServerName hdwf.holgerdanske.com
    ServerAdmin [EMAIL PROTECTED]
    DocumentRoot /home/dpchrist/hdwf/htdocs
    HostnameLookups off
    UserDir disabled
    Alias /images/ /home/dpchrist/hdwf/images/
</VirtualHost>

<Directory /home/dpchrist/hdwf>
    AllowOverride All
</Directory>

<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat htdocs/.htaccess
# $Id: .htaccess,v 1.6 2005/11/28 03:15:06 dpchrist Exp $
#
# Apache configuration settings for hdwf.holgerdanske.com
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>

DirectoryIndex index.pl

SetHandler      perl-script
PerlHandler     Apache::Registry
Options         +ExecCGI
PerlSendHeader  On

<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat htdocs/index.pl
#! /usr/bin/perl
#######################################################################
# $Id: index.pl,v 1.2 2005/11/28 00:05:17 dpchrist Exp $
#
# Perl instance script for hdwf.holgerdanske.com.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
#######################################################################

use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);

use FindBin qw( $Bin );
use lib "$Bin/../modules";

use Hdwf;

my $app = Hdwf->new();

$app->run();

#######################################################################

<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat modules/Hdwf.pm
#######################################################################
# $Id: Hdwf.pm,v 1.8 2005/11/28 03:15:06 dpchrist Exp $
#
# hdwf.holgerdanske.com CGI::Application module.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
#######################################################################
# uses:
#----------------------------------------------------------------------

use warnings;
use strict;

use CGI;
use CGI::Carp qw(fatalsToBrowser);

package Hdwf;
use base 'CGI::Application';

#######################################################################
# overloaded CGI::Application methods:
#----------------------------------------------------------------------

sub setup {
    my $self = shift;
    $self->start_mode('home');
    $self->mode_param('rm');
    $self->run_modes(
        'home'  => 'home',
    );
}

#######################################################################
# run modes:
#----------------------------------------------------------------------

sub home {
    return
        "hello, world!";
}

#######################################################################
# end of module:
#----------------------------------------------------------------------

1;

__END__

#######################################################################


Adding the Apache::Reload lines to vhosts.conf:

<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat conf/vhost.conf
# $Id: vhost.conf,v 1.1 2005/11/27 07:18:45 dpchrist Exp $
#
# Apache configuration settings for hdwf.holgerdanske.com.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>

<VirtualHost 192.168.254.22>
    ServerName hdwf.holgerdanske.com
    ServerAdmin [EMAIL PROTECTED]
    DocumentRoot /home/dpchrist/hdwf/htdocs
    HostnameLookups off
    UserDir disabled
    Alias /images/ /home/dpchrist/hdwf/images/
</VirtualHost>

<Directory /home/dpchrist/hdwf>
    AllowOverride All
    PerlModule Apache::Reload
    PerlInitHandler Apache::Reload
    PerlSetVar ReloadAll Off
    PerlSetVar ReloadModules "Hdwf Hdwf::*"
</Directory>

Doing a graceful restart of Apache and browsing to
http://hdwf.holgerdanske.com/, it works the first time, fails on refresh, works
on the second refresh, and then fails on all subsequent refreshes (tested
twenty).  I have my server configured to start one thread, with a minimum and
maximum of one spare thread.  Here's the error log:

[Sun Nov 27 19:40:12 2005] [notice] SIGUSR1 received.  Doing graceful restart
[Sun Nov 27 19:40:13 2005] [notice] Apache/1.3.33 (Debian GNU/Linux) mod_perl/1.
29 configured -- resuming normal operations
[Sun Nov 27 19:40:13 2005] [notice] Accept mutex: sysvsem (Default: sysvsem)
[Sun Nov 27 19:40:41 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:04 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:14 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:28 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:29 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:30 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:31 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:32 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:33 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:34 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:34 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:35 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:39 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:43 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:44 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:45 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:46 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:47 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n
[Sun Nov 27 19:41:48 2005] [error] Can't locate Hdwf.pm in @INC (@INC contains:
/etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /
usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .
 /etc/apache-perl/ /etc/apache-perl/lib/perl) at /usr/local/share/perl/5.8.4/Apa
che/Reload.pm line 132.\n

It would appear that Apache::Reload is losing the Perl library path information
set by FindBin in the instance script.


Trying again, but this time putting the Apache::Reload stuff into .htaccess:

<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat htdocs/.htaccess
# $Id: .htaccess,v 1.6 2005/11/28 03:15:06 dpchrist Exp $
#
# Apache configuration settings for hdwf.holgerdanske.com
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>

DirectoryIndex index.pl

SetHandler      perl-script
PerlModule      Apache::Reload
PerlInitHandler Apache::Reload
PerlSetVar      ReloadAll Off
PerlSetVar      ReloadModules "Hdwf Hdwf::*"
PerlHandler     Apache::Registry
Options         +ExecCGI
PerlSendHeader  On

The results are identical to above.


Keeping Apache::Reload in .htaccess and adding "use Apache::Reload" to my C::A
derived module:

<CVSENV>[EMAIL PROTECTED]:~/hdwf$ cat modules/Hdwf.pm
#######################################################################
# $Id: Hdwf.pm,v 1.8 2005/11/28 03:15:06 dpchrist Exp $
#
# hdwf.holgerdanske.com CGI::Application module.
#
# Copyright 2005 by David Christensen <[EMAIL PROTECTED]>
#######################################################################
# uses:
#----------------------------------------------------------------------

use warnings;
use strict;

use Apache::Reload;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

package Hdwf;
use base 'CGI::Application';

#######################################################################
# overloaded CGI::Application methods:
#----------------------------------------------------------------------

sub setup {
    my $self = shift;
    $self->start_mode('home');
    $self->mode_param('rm');
    $self->run_modes(
        'home'  => 'home',
    );
}

#######################################################################
# run modes:
#----------------------------------------------------------------------

sub home {
    return
        "hello, world!";
}

#######################################################################
# end of module:
#----------------------------------------------------------------------

1;

__END__

#######################################################################

The results are identical to above.


Any suggestions?


TIA,

David


---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/cgiapp@lists.erlbaum.net/
              http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to