On Wed, 22 Jan 2003 22:21:20 -0700
"Joseph P. Crotty" <[EMAIL PROTECTED]> wrote:
> Here is the simplest form of the problem I can produce.
>
> I have two handlers and want to pass some info between them visa vi pnotes. One
> is a PerlTransHandler for Apache::SessionManager and the other is a PerlHandler
> for a simple Hello.pm that dumps some html with the current _session_start value
> (i.e. from pnotes). Apache::SessionManager checks to see if a session file
> exists, creates one if not, and updates pnotes appropriately.
>
> The problem - if I request index.html there is no value in pnotes for
> _session_start as confirmed by Hello.pm.
Hi Joseph,
I have a little question. You request:
http://yourserver.com
or:
http://yourserver.com/index.html
?
Note that in first case Apache can do an internal subrequest to
file(s) defined by the DirectoryIndex directive.
Currently, Apache::SessionManager skips all subrequests.
Otherwise, the second URL works fine.
>It seems that there is nothing in
> pnotes period. If after the request I manually inspect the session file created
> I find a value for _session_start. Request other pages (e.g. test.html) and
> there are expected pnotes entries confirmed by Hello.pm.
>
For the URI ending with a slash, you can this workaround by putting this line
in your http.conf:
RedirectMatch (.*)/$ $1/index.html
> Apache 1.3.27 mod_perl
>
> <httpd.conf snippet>
> #START mod_perl Configuration
> #----------------------------
> PerlRequire conf/startup.pl
> PerlSetEnv MOD_PERL_TRACE all
>
> PerlSetEnv SERVER_ROOT /usr/local/apache/
> #--------------------------
> #END mod_perl Configuration
>
>
> #START Apache::SessionManager Configuration
> #------------------------------------------
> PerlModule Apache::SessionManager
> PerlTransHandler Apache::SessionManager
> #----------------------------------------
> #END Apache::SessionManager Configuration
>
>
> #START Block Directives
> #----------------------
> <Location />
> SetHandler perl-script
> PerlSetVar SessionManagerDebug 0
> PerlSetVar SessionManagerTracking On
> PerlSetVar SessionManagerExpire 3600
> PerlSetVar SessionManagerStore File
> PerlSetVar SessionManagerStoreArgs "Directory =>
> /usr/local/apache/session, \
> LockDirectory =>
> /usr/local/apache/session/lock"
> </Location>
>
> <Directory "/usr/local/apache/htdocs">
> <Files ~ "index.html$">
> SetHandler perl-script
> PerlHandler MyApache::Hello
> </Files>
>
> <Files ~ "test.html$">
> SetHandler perl-script
> PerlHandler MyApache::Hello
> </Files>
> </Directory>
>
Your configuration seems to be bizarre...! ;-)
As I have answered to you in a previous personal post, if you want to use
Apache::SessionManager with the <Directory> directives (and you do not want
to put the PerlSetVar SessionManager* directives in httpd.conf's global scope,
of course), you can install it in the header_parser phase by putting a line like
this:
PerlHeaderParserHandler Apache::SessionManager
in global, <VirtualHost>, <Directory>, <Location>, .htaccess sections of your
httpd.conf file. For example:
---CUT HERE---
PerlModule Apache::SessionManager
<Directory /usr/local/apache/htdocs>
<FilesMatch "\.html$">
SetHandler perl-script
PerlHandler MyApache::Hello
PerlHeaderParserHandler Apache::SessionManager
PerlSetVar SessionManagerTracking On
PerlSetVar SessionManagerExpire 3600
PerlSetVar SessionManagerInactivity 900
PerlSetVar SessionManagerName MYPELRSESSIONID
PerlSetVar SessionManagerStore File
PerlSetVar SessionManagerStoreArgs "Directory => /tmp/apache_session_data/"
PerlSetVar SessionManagerDebug 5
</FilesMatch>
</Directory>
---CUT HERE---
If you need session URI tracking, you must accept the compromise...:
the PerlTransHandler phase with <Location> directive. This is a configuration
example to run all the /cgi-bin executable scripts over Apache::Registry
with session ID URI rewriting:
---CUT HERE---
PerlModule Apache::SessionManager
PerlTransHandler Apache::SessionManager
Alias /perl/ /usr/local/apache/cgi-bin/
<LocationMatch "^/([0-9a-h]+/)?perl">
SetHandler perl-script
PerlHandler Apache::Registry
PerlSendHeader On
PerlSetupEnv On
Options ExecCGI
PerlSetVar SessionManagerTracking On
PerlSetVar SessionManagerURITracking On
PerlSetVar SessionManagerExpire 3600
PerlSetVar SessionManagerInactivity 1800
PerlSetVar SessionManagerName MYPELRSESSIONID
PerlSetVar SessionManagerStore File
PerlSetVar SessionManagerStoreArgs "Directory => /tmp/apache_session_data/"
PerlSetVar SessionManagerDebug 5
</LocationMatch>
---CUT HERE---
by
- Enrico