the perl core is early buggy
some misunderstand in the regex
some valuable { is again ....
my personnal experience with the mod perl user is crach with the webmail
if Jaos @
Le mardi 04 janvier 2011 à 14:57 +0100, Peter Albrecht a écrit :
> Hello everyone,
>
> 1. Problem Description:
>
> Using PHP as response handler seems to clear the authenticated user
> ("$r->user()") in successive mod_perl handlers.
>
>
> *** Reproduce:
>
> 1.1. Install attached simple Apache2 server setup (see "4. Source-snippets")
>
> 1.2. PHP response handler
>
> 1.2.1. Ensure the following lines of "/etc/apache2/vhosts/bug.conf" are
> commented out:
>
> # SetHandler modperl
> # PerlResponseHandler MyApache2::MyResponseHandler
>
> => PHP response handler will be in action
>
> 1.2.2. visit http://<yourServer>/index.php with your browser
>
> 1.2.3. error.log tells us:
> [Tue Jan 04 11:29:03 2011] [info] [client 90.148.54.54] Start
> Authentication
> [Tue Jan 04 11:29:03 2011] [info] [client 90.148.54.54] Session started
> for user: 'JonDoe'
> [Tue Jan 04 11:29:03 2011] [error] [client 90.148.54.54] OutputFilter:
> user = "" <-- failure! Should be 'JonDoe'
>
> 1.3. mod_perl response handler
>
> 1.3.1. Enable the following lines of "/etc/apache2/vhosts/bug.conf":
>
> SetHandler modperl
> PerlResponseHandler MyApache2::MyResponseHandler
>
> => mod_perl response handler (MyResponseHandler.pm) will be in action
>
> 1.3.2. visit http://<yourServer>/index.php with your browser
>
> 1.3.3. error.log tells us:
> [Tue Jan 04 11:30:28 2011] [info] [client 90.148.54.54] Start
> Authentication
> [Tue Jan 04 11:30:28 2011] [info] [client 90.148.54.54] Session started
> for user: 'JonDoe'
> [Tue Jan 04 11:30:28 2011] [error] [client 90.148.54.54] OutputFilter:
> user = "JonDoe" <-- correct behaviour!
>
>
>
> *** Actual result:
>
> Both ResponseHandlers know the authenticated user (see browser output). But
> in case of the PHP response handler, "$r->user()" seems to be resetted for
> futher mod_perl handlers (like MyOutputFilter). Using a mod_perl response
> handler, I always get the correct authenticated user via "$r->user()" in
> succesive handlers.
>
>
> *** Expected result:
>
> After PHP response handler "$r->user()" should provide the authenticated
> user for use in succesive mod_perl handlers like OutputFilter or LogHandler.
>
>
> *** Workaround:
>
> In your AuthenticationHandler make a backup of the user in an user defined
> Apache note:
>
> $r->notes->set('myAuthenUser', $r->user());
>
> and use that one in later handlers:
>
> my $user = $r->notes->get('myAuthenUser');
>
>
> 2. Used Components and their Configuration:
>
> *** mod_perl version 2.000004
>
> *** using
> /usr/lib/perl5/vendor_perl/5.10.0/i586-linux-thread-multi/Apache2/BuildConfig.pm
>
> *** Makefile.PL options:
> MP_APR_LIB => aprext
> MP_APXS => /usr/sbin/apxs2
> MP_CCOPTS => -march=i586 -mtune=i686 -fmessage-length=0 -O2 -Wall
> -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables
> -fasynchronous-unwind-tables -g -fPIC -Wall -fno-strict-aliasing
> -DLDAP_DEPRECATED
> MP_COMPAT_1X => 1
> MP_GENERATE_XS => 1
> MP_LIBNAME => mod_perl
> MP_USE_DSO => 1
>
>
> *** The httpd binary was not found
>
> .. but "httpd2 -V" tells:
>
> Server version: Apache/2.2.10 (Linux/SUSE)
> Server built: Feb 23 2009 21:11:31
> Server's Module Magic Number: 20051115:18
> Server loaded: APR 1.3.3, APR-Util 1.3.4
> Compiled using: APR 1.3.3, APR-Util 1.3.4
> Architecture: 32-bit
> Server MPM: Prefork
> threaded: no
> forked: yes (variable process count)
> Server compiled with....
> -D APACHE_MPM_DIR="server/mpm/prefork"
> -D APR_HAS_SENDFILE
> -D APR_HAS_MMAP
> -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
> -D APR_USE_SYSVSEM_SERIALIZE
> -D APR_USE_PTHREAD_SERIALIZE
> -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
> -D APR_HAS_OTHER_CHILD
> -D AP_HAVE_RELIABLE_PIPED_LOGS
> -D DYNAMIC_MODULE_LIMIT=128
> -D HTTPD_ROOT="/srv/www"
> -D SUEXEC_BIN="/usr/sbin/suexec2"
> -D DEFAULT_PIDLOG="/var/run/httpd2.pid"
> -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
> -D DEFAULT_LOCKFILE="/var/run/accept.lock"
> -D DEFAULT_ERRORLOG="/var/log/apache2/error_log"
> -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
> -D SERVER_CONFIG_FILE="/etc/apache2/httpd.conf"
>
>
> *** (apr|apu)-config linking info
>
> (apr|apu)-config scripts were not found
>
>
>
> *** /usr/bin/perl -V
> Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
> Platform:
> osname=linux, osvers=2.6.27, archname=i586-linux-thread-multi
> uname='linux eisler 2.6.27 #1 smp 2009-02-09 15:38:31 +0100 i686 athlon
> i386 gnulinux '
> config_args='-ds -e -Dprefix=/usr -Dvendorprefix=/usr -Dinstallusrbinperl
> -Dusethreads -Di_db -Di_dbm -Di_ndbm -Di_gdbm -Duseshrplib=true
> -Doptimize=-march=i586 -mtune=i686 -fmessage-length=0 -O2 -Wall
> -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables
> -fasynchronous-unwind-tables -g -Wall -pipe -Accflags=-DPERL_USE_SAFE_PUTENV'
> hint=recommended, useposix=true, d_sigaction=define
> useithreads=define, usemultiplicity=define
> useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
> use64bitint=undef, use64bitall=undef, uselongdouble=undef
> usemymalloc=n, bincompat5005=undef
> Compiler:
> cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV
> -DDEBUGGING -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64',
> optimize='-march=i586 -mtune=i686 -fmessage-length=0 -O2 -Wall
> -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables
> -fasynchronous-unwind-tables -g -Wall -pipe',
> cppflags='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -DDEBUGGING
> -fno-strict-aliasing -pipe'
> ccversion='', gccversion='4.3.2 [gcc-4_3-branch revision 141291]',
> gccosandvers=''
> intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
> d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
> ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
> lseeksize=8
> alignbytes=4, prototype=define
> Linker and Libraries:
> ld='cc', ldflags =''
> libpth=/lib /usr/lib /usr/local/lib
> libs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
> perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
> libc=/lib/libc-2.9.so, so=so, useshrplib=true, libperl=libperl.so
> gnulibc_version='2.9'
> Dynamic Linking:
> dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E
> -Wl,-rpath,/usr/lib/perl5/5.10.0/i586-linux-thread-multi/CORE'
> cccdlflags='-fPIC', lddlflags='-shared -march=i586 -mtune=i686
> -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector
> -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe'
>
>
> Characteristics of this binary (from libperl):
> Compile-time options: DEBUGGING MULTIPLICITY PERL_DONT_CREATE_GVSV
> PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
> PERL_TRACK_MEMPOOL PERL_USE_SAFE_PUTENV USE_ITHREADS
> USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API
> Built under linux
> Compiled at Feb 21 2009 07:14:55
> %ENV:
> PERL_LWP_USE_HTTP_10="1"
> @INC:
> /usr/lib/perl5/5.10.0/i586-linux-thread-multi
> /usr/lib/perl5/5.10.0
> /usr/lib/perl5/site_perl/5.10.0/i586-linux-thread-multi
> /usr/lib/perl5/site_perl/5.10.0
> /usr/lib/perl5/vendor_perl/5.10.0/i586-linux-thread-multi
> /usr/lib/perl5/vendor_perl/5.10.0
> /usr/lib/perl5/vendor_perl
> .
>
> *** Packages of interest status:
>
> Apache2 : -
> Apache2::Request : -
> CGI : 3.29
> ExtUtils::MakeMaker: 6.42
> LWP : 5.816
> mod_perl : -
> mod_perl2 : 2.000004
>
>
> 3. This is the core dump trace: (if you get a core dump):
>
> got no core dump
>
> This report was generated by /usr/bin/mp2bug on Wed Dec 22 06:49:14 2010 GMT.
>
> *** Other environment information (manual addition)
>
> Linux: SuSE Linux Enterprise Server 11, PL0
>
> rpm -qa | grep php:
> apache2-mod_php5-5.2.6-50.17
> php5-5.2.6-50.17
> php5-zlib-5.2.6-50.17
> php5-iconv-5.2.6-50.17
> php5-xmlreader-5.2.6-50.17
> php5-pear-log-1.9.11-24.28
> php5-mcrypt-5.2.6-50.17
> php5-tokenizer-5.2.6-50.17
> php5-mbstring-5.2.6-50.17
> php5-gd-5.2.6-50.17
> php5-odbc-5.2.6-50.17
> php5-ncurses-5.2.6-50.17
> php5-sqlite-5.2.6-50.17
> php5-curl-5.2.6-50.17
> php5-pdo-5.2.6-50.17
> php5-json-5.2.6-50.17
> php5-dom-5.2.6-50.17
> php5-mysql-5.2.6-50.17
> php5-pear-5.2.12-5.1
> php5-devel-5.2.6-50.17
> php5-openssl-5.2.6-50.17
> php5-ctype-5.2.6-50.17
> php5-ldap-5.2.6-50.17
> php5-xmlwriter-5.2.6-50.17
> php5-hash-5.2.6-50.17
> php5-APC-3.1.3-1.1
>
> rpm -qa | grep apache2:
> apache2-utils-2.2.10-2.18
> apache2-2.2.10-2.18
> apache2-example-pages-2.2.10-2.18
> apache2-mod_php5-5.2.6-50.17
> apache2-mod_auth_kerb-5.4-7.1
> apache2-prefork-2.2.10-2.18
> apache2-worker-2.2.10-2.18
> apache2-doc-2.2.10-2.18
> apache2-mod_python-3.3.1-147.19
> apache2-mod_jk-1.2.26-1.29
> apache2-mod_perl-2.0.4-40.19
>
>
> 4. Source-snippets:
>
> *** ./htdocs/index.php
> <?php
> print("Hello world! From php (REMOTE_USER: \"" . $_SERVER['REMOTE_USER'] .
> "\")");
> ?>
>
>
> *** ./mp2/MyApache2/MyAuthenHandler.pm
> [...]
> sub handler {
> my $r = shift;
> my $logger = $r->log;
>
> $logger->info('Start Authentication');
>
> $r->ap_auth_type('Session');
> $r->user('JonDoe');
>
> $logger->info("Session started for user: '" . $r->user() . "'");
> return Apache2::Const::OK;
> }
> [...]
>
>
> *** ./mp2/MyApache2/MyResponseHandler.pm
> [...]
> sub handler {
> my $r = shift;
>
> $r->print("Hello world! From mod_perl (Request-User: \"" . $r->user()
> . "\")");
>
> return Apache2::Const::OK;
> }
> [...]
>
>
> *** ./mp2/MyApache2/MyOutputFilter.pm
> [...]
> use base qw(Apache2::Filter);
>
> sub handler : FilterRequestHandler {
> my $f = shift;
>
> my $r = $f->r;
> my $logger = $r->log;
>
> $logger->error("OutputFilter: user = \"" . $r->user() . "\"");
>
> return Apache2::Const::DECLINED;
> }
> [...]
>
>
> *** /etc/apache2/vhosts/bug.conf
> <VirtualHost *:80>
> [...]
> php_value include_path ".:/usr/share/php5:/usr/share/php5/PEAR"
> <Perl>
> use lib qw#/srv/www/bug/mp2#;
> </Perl>
>
> <Directory /srv/www/bug/htdocs>
> AddType text/html .php
> PerlAuthenHandler MyApache2::MyAuthenHandler
> PerlOutputFilterHandler MyApache2::MyOutputFilter
>
> Allow from all
> AuthType MyAuthType
> AuthName "Secret Area"
> require valid-user
>
> # SetHandler modperl
> # PerlResponseHandler MyApache2::MyResponseHandler
> </Directory>
> </VirtualHost>
>
--
gpg --keyserver pgp.mit.edu --recv-key 092164A7
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x092164A7
signature.asc
Description: Ceci est une partie de message numériquement signée
