The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 1.12

  • added a long overdue CREDITS file
  • add SSLCacheServer{Port,Path} directives for ApacheSSL + 'make test'
  • Adam Laurie <adam@algroup.co.uk>
    • added $r->location method
    • Various fixes and improvements to the APACI support:
      • Added support for PERL_THREADS to apaci stuff. This is needed under the bleeding edge Perl's (e.g. 5.004_6X).
      • Avoid more unnecessary file copies and edits under APACI situation.
      • Cleanup the PERL_XXX hooks in apaci/mod_perl.config[.sh]
      • Ralf S. Engelschall
        • Add additional .xs.o target to apaci/Makefile.tmpl to workaround braindead Makes.
      • Brian P Millett <bpm@ec-group.com>
    • if $r->subprocess_env is called in a void context just call (void)perl_cgi_env_init(r)
    • $ENV{PATH}: don't let perl_clear_env() clear it's value
    • prevent $r->dir_config SEGV if called during ChildInit, spotted by Lincoln Stein
    • add a dTHR to perl_util.c for threaded 5.004_66
  • Brian P Millett <bpm@ec-group.com>
    • added $r->get_server_port method
    • sfio read will now call Apache::read, as it should. Thanks to Steve Farrell for the spot
    • added $r->last method
    • $r->cgi_env when called in a void context will simply setup the subprocess_env table
    • avoid some possible warnings in Apache.pm [Brian Mosley <ix@maz.org>]
    • added $r->request_time method
    • fix bug when PERL_MARK_WHERE was undefined spotted by Kermit Tensmeyer
    • emulate pre-1.3b6 r->uri/r->proxyreq behavior for proxy requests inside the post_read_request_handler and add t/internal/proxy test
    • added additional installation document INSTALL.apaci which describes the new APACI stuff (including background information).
  • Ralf S. Engelschall <rse@engelschall.com>
    • added new (but still optional!) Apache 1.3 support via the new Apache Autoconf-style Interface (APACI): The option USE_APACI=1 triggers a new build-environment (from local apaci/) for the APACHE_SRC/src/modules/perl/ which provides a clean way (i.e. without patching anything inside APACHE_SRC, not even the Configuration file) of configuring mod_perl via a APACHE_SRC/src/modules/perl/mod_perl.config file. The completey configuration is enabled by just using the APACI command "configure --activate-module=src/modules/perl/libperl.a"
  • Ralf S. Engelschall <rse@engelschall.com>
    • experimental tie of $0 to Apache->request->filename, enable with -DPERL_TIE_SCRIPTNAME
    • added little Apache::system that redirects output to the browser, should this be imported into Apache::{Registry,PerlRun} scripts?
    • new Apache::Tie module, provides Apache::TieHashTable for a proper interface to Apache table structures. The following methods, called in a scalar context with no "key" argument, will return a HASH reference, where HASH is tied to Apache::TieHashTable: headers_in, headers_out, err_headers_out, notes, dir_config, subprocess_env enable with PERL_TIE_TABLES=1 see also: t/net/perl/tie_table.pl
    • remove Cwd::fastcwd usage from Apache::Registry, use $Apache::Server::CWD set at server startup instead
    • new method Apache->chdir_file, use to replace chdir File::Basename::dirname($r->filename) in Apache::Registry
    • replace Apache::Registry use of IO::File w/ Apache::gensym
    • new function Apache::gensym (xsub, does same as Symbol::gensym)
    • add $ServerRoot/lib/perl to @INC at startup
    • add code to deal with 1.3b7-dev's SERVER_SUBVERSION replacement
    • a few doc patches [John D Groenveld <jdg117@elvis.arl.psu.edu>]
    • re-implemented $r->read to properly use *client_block methods and call reset_timeout after each read in the loop. until this is well tested, the method is called new_read. to test on tie'd STDIN reads, a startup script can say this: *Apache::READ = \&Apache::new_read;
    • added setup_client_block, should_client_block and get_client_block methods
    • modules/cgi test will attempt a fileupload of perlfunc.pod to file_upload.cgi if HTTP::Request::Common is installed (libwww-perl-5.09+) and $CGI::VERSION >= 2.39
    • make $r->connection->aborted work as documented again, thanks to spot by Jens Heunemann
    • swap order of stacked handlers so dynamic ones (push_handlers) are invoked after server .conf configured handlers
    • replace uses of SvPVX() with SvPV() to prevent possible core dump if called with a non-string value
    • added COMPILED REGULAR EXPRESSIONS section to mod_perl_traps.pod [David Landgren <david@landgren.net>, Mark Mills <mark@ntr.net>, Randal Schwartz <merlyn@stonehenge.com>, Jens Heunemann <heunemann2@janet.de>]
    • have ldopts yank ExtUtils::Liblist message: Note (probably harmless): No library found for ... from stdout to stderr [Stas Bekman <sbekman@iil.intel.com>]
    • change Apache.xs/typemap so classes who inherit from the Apache class can invoke methods with a hash object, provided $hash->{_r} contains a request_rec object
    • additions to experimental Perl directive support:
    • a per-directory config object is now passed as the first argument to directive handlers registered via Apache::ExtUtils->xs_cmd_table the object is a hash reference blessed into the same class as the handler
    • $r->dir_config with no args now looks for per-directory config in the caller's namespace
    • xs_cmd_table now looks for a prototype to determine TAKE1, TAKE2, TAKE3, etc.
    • added $Apache::CurrentThreadId variable under win32
    • added method/object handler tests to internal/stacked test
    • fixed broken modules/eperl test spotted by Tom Mornini
    • fixed Makefile.PL bug spotted by Jon Drukman w/ PERL_CHILD_EXIT=1 in fact, PerlChildInitHandler/PerlHandlerExitHandler are always enabled by default now with 1.3bx+
    • added experimental get_handlers/set_handlers methods (enable with PERL_GET_SET_HANDLERS=1)
    • new module Apache::PerlRun, splits out Apache::Registry functionality and provides a `dirty-perl' handler (see pod). thanks to Stas Bekman for testing and suggestions.
    • PERL_OBJECT_HANDLERS now enabled #ifdef PERL_METHOD_HANDLERS
    • widen scope of mutex lock under win32 to avoid possible deadlock
  • Gerald Richter <richter@ecos.de>
    • fixed bug in directory_merge where FLAG directives would inherit `On' from the base configuration, even if the directory explicitly had the flag turned `Off', this was the case for PerlSendHeader and PerlSetupEnv. thanks to Mark-Jason Dominus for the spot.
    • added `grab' function to Apache::test, which fetches a url and gives diagnostics as to validity of the HTTP response (a test for properly formatted headers!)

Documentation

using LWP::Simple and Benchmark.pm to benchmark mod_perl
benchmark mod_perl vs. CGI with File::CounterFile
First steps needed to use mod_perl as a CGI replacement
accessing the Apache API via mod_perl ($Date: 1998/03/19 23:08:34 $)
running CGI scripts under mod_perl ($Date: 1998/05/28 21:55:33 $)
frequently asked questions about mod_perl ($Date: 1998/05/28 21:55:33 $)
Embed a Perl interpreter in the Apache HTTP server
Access to the mod_perl CVS development tree
common/known mod_perl traps
mod_perl performance tuning

Modules

Perl interface to the Apache server API
Constants defined in apache header files
Things for symbol things
Tie interfaces to Apache structures
Utilities for debugging embedded perl code
Utils for Apache:C/Perl glue
Utilities for mod_perl/mod_include integration
OPT_* defines from httpd_core.h
Run unaltered CGI scripts under mod_perl
Utilities for work with <Perl> sections
Properly set redirect status for loggers
Run unaltered CGI scrips under mod_perl
Compile Apache::Registry scripts at server startup
Limit resources used by httpd children
Override apache signal handlers with Perl's
Reload %INC files when updated on disk
Embedded interpreter status information
Override Perl's built-in fork()
Generate an httpd.conf file
Methods for locating and parsing bits of Apache source code
Install Apache mod_perl and related modules

Provides

in lib/Apache/FakeRequest.pm
in ModuleConfig/ModuleConfig.pm
in lib/Apache/httpd_conf.pm
in lib/Apache/test.pm
in lib/Apache/Registry.pm
in lib/mod_perl.pm.PL