1. Problem Description: I have trouble getting iniformation from CGI-forms sent by HTTP/POST. To reproduce the problem; use the testpackage I've written and included in section 5 of this mail. I've also included what I've found relevant from my mod_perl/Apache-setup in section 4.
My observation is that there is no problem using GET to transfer form-data, but no data at all is avaliable through $q->param when using POST. I have tested this with different versions of mod_perl (1.99_09, snapshot from cvs this sunday and finally 1.99_10 released yesterday) and CGI.pm (2.93, 3.00) - as for now I run mod_perl 1.99_10 and CGI.pm 3.0. If there is something in my setup that causes this, please point me in the right direction or maybe towards the right documentation. - It is not totally neccessary for me to use CGI.pm, the most important is to receive the data ;) Best regards, Christian 2. Used Components and their Configuration: *** mod_perl version 1.9910 *** using /usr/lib/perl5/vendor_perl/5.8.0/i686-linux/Apache2/Apache/BuildConfig.pm *** Makefile.PL options: MP_APXS => /usr/sbin/apxs2 MP_AP_PREFIX => /usr MP_COMPAT_1X => 1 MP_DEBUG => 1 MP_GENERATE_XS => 1 MP_INST_APACHE2 => 1 MP_LIBNAME => mod_perl MP_TRACE => 1 MP_USE_DSO => 1 *** /usr/sbin/apache2 -V Server version: Apache/2.0.47 Server built: Sep 27 2003 22:37:55 Server's Module Magic Number: 20020903:4 Architecture: 32-bit 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 HTTPD_ROOT="/usr" -D SUEXEC_BIN="/usr/sbin/suexec2" -D DEFAULT_PIDLOG="/var/run/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_LOCKFILE="/var/run/accept.lock" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="/etc/apache2/conf/mime.types" -D SERVER_CONFIG_FILE="/etc/apache2/conf/apache2.conf" *** /usr/bin/perl -V Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration: Platform: osname=linux, osvers=2.4.23-pre5-ih, archname=i686-linux uname='linux admin.interhost.no 2.4.23-pre5-ih #8 sat sep 27 17:13:24 cest 2003 i686 gnulinux ' config_args='-des -Darchname=i686-linux -Dcc=gcc -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr -Dlocincpth= -Doptimize=-O3 -march=pentium4 -funroll-loops -fprefetch-loop-arrays -pipe -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Dscriptdir=/usr/bin -Dman3ext=3pm -Dcf_by=Gentoo -Ud_csh -Di_gdbm -Di_db -Di_ndbm' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='gcc', ccflags ='-DPERL5 -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O3 -march=pentium4 -funroll-loops -fprefetch-loop-arrays -pipe', cppflags='-DPERL5 -DPERL5 -fno-strict-aliasing' ccversion='', gccversion='3.2.3 20030422 (Gentoo Linux 1.4 3.2.3-r1, propolice)', 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='gcc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lpthread -lnsl -lndbm -lgdbm -ldb -ldl -lm -lc -lcrypt -lutil perllibs=-lpthread -lnsl -ldl -lm -lc -lcrypt -lutil libc=/lib/libc-2.3.2.so, so=so, useshrplib=false, libperl=libperl.a gnulibc_version='2.3.2' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: USE_LARGE_FILES Built under linux Compiled at Sep 28 2003 20:17:30 %ENV: PERL_LWP_USE_HTTP_10="1" @INC: /etc/perl /usr/lib/perl5/site_perl/5.8.0/i686-linux /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i686-linux /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.0/i686-linux /usr/lib/perl5/5.8.0 /usr/local/lib/site_perl . 3. This is the core dump trace: (if you get a core dump): [CORE TRACE COMES HERE] This report was generated by -e on Tue Sep 30 12:02:35 2003 GMT. 4. My Apache configuration (relevant parts) ----BEGIN mod_perl.conf ----- <IfDefine PERL> <IfModule !mod_perl.c> LoadModule perl_module extramodules/mod_perl.so </IfModule> </IfDefine> <IfModule mod_perl.c> #PerlTrace all PerlRequire "/etc/apache2/conf/modules.d/apache2-mod_perl-startup.pl" </ifModule> ----END mod_perl.conf ----- ----BEGIN /etc/apache2/conf/modules.d/apache2-mod_perl-startup.pl ----- use Apache2 (); # 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 APR::Table (); use ModPerl::Registry (); use Apache::Const -compile => ':common'; use APR::Const -compile => ':common'; 1; ----END /etc/apache2/conf/modules.d/apache2-mod_perl-startup.pl ----- ----BEGIN sample from commonapache2.conf ----- <IfModule mod_perl.c> PerlOptions +GlobalRequest PerlModule CGItest <Location /CGItest> SetHandler modperl PerlResponseHandler CGItest </Location> </IfModule> ----END sample from commonapache2.conf ----- 5. Test module ----BEGIN CGItest.pm ---- package CGItest; use strict; use Apache::RequestRec (); use Apache::RequestIO (); use Apache::Const -compile => qw(OK); use CGI 3.0; CGI->compile; sub handler { my $r = shift; my $q = CGI->new($r); $r->content_type('text/html'); my @out = ('<html><body>', '<h1>CGItest</h1>', '<h2>GET-parameters</h2>', '<table>','<tr><th>Key</th><th>Value</th></tr>'); foreach my $param ($q->url_param) { push @out, ('<tr><td>'.$param.'</td><td>'.$q->url_param($param).'</td></tr>'); } push @out, ('</table>', '<h2>POST-parameters</h2><h3>(GET-parameters when there is no POST-parameters)</h3>', '<table>','<tr><th>Key</th><th>Value</th></tr>'); foreach my $param ($q->param) { push @out, ('<tr><td>'.$param.'</td><td>'.$q->param($param).'</td></tr>'); } push @out, ('</table>'); push @out, ('<h2>GET-form</h2>', '<form action="/CGItest" method="get" enctype="application/x-www-form-urlencode">', '<table>', '<tr><td>GET-a</td><td><input type="text" name="GET-a"></td></tr>', '<tr><td>GET-b</td><td><input type="text" name="GET-b"></td></tr>', '</table>', '<input type="submit" value="GET">', '</form>'); push @out, ('<h2>POST-form</h2>', '<form action="/CGItest" method="post" enctype="application/x-www-form-urlencode">', '<table>', '<tr><td>POST-a</td><td><input type="text" name="POST-a"></td></tr>', '<tr><td>POST-b</td><td><input type="text" name="POST-b"></td></tr>', '</table>', '<input type="submit" value="POST">', '</form>'); push @out, ('<h2>Combined GET/POST-form</h2>', '<form action="/CGItest?GET=combined" method="post" enctype="application/x-www-form-urlencode">', '<table>', '<tr><td>POST-i</td><td><input type="text" name="POST-i"></td></tr>', '<tr><td>POST-ii</td><td><input type="text" name="POST-ii"></td></tr>', '</table>', '<input type="submit" value="GET/POST">', '</form>'); push @out, ('</body></html>'); $r->print(join("\n",@out)); return Apache::OK; } 1; ----END CGItest.pm ---- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]