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

Changes for version 1.08

  • Apache::Registry will now fold multiple /'s to fix possible bug spotted by Gerald Richter
  • fix Apache/Makefile.PL and Constants/Makefile.PL so DYNAMIC=1 works with 1.3b5 (new include directory)
  • Constants.xs will now #include mod_perl.h so namespace #undefs are used
  • fixup some #define clashes on aix thanks to Eric Bartley
  • fixed Makefile.PL workaround for plucking SSL_INCLUDE with help from Dan Peterson
  • can build again with threaded Perl (was just missing a few dTHR's)
  • cleared up BEGIN/END documenation with help from John Charlesworth
  • applied patch from Christopher McCrory so -f is also used when 'make test' httpd is started so it'll work with a .rpm file for a redhat linux
  • added Apache::Constants->name method
  • fix an #endif; in mod_perl.h thanks to Eric Bartley
  • mod_perl_cleanup_handler won't try to if(cld) MP_RCLEANUP_off(cld); #ifdef WIN32 to stop crash spotted by David Hodson
  • expose stacked handlers to Perl via %Apache::PerlStackedHandlers (this is only those pushed via $r->push_handlers)
  • can now tell Makefile.PL APACHE_INCLUDE_INSTALL=0 if you don't want header files installed
  • when Apache::Status tries to load optional modules, it will locally turn off $SIG{__DIE__} to fix bug spotted by Dan Peterson
  • added SERVER_BUILT to Apache::Constants
  • got rid of "Use of uninitialized value." warning in perl_util.c seen when running HTML::Embperl, hunted down by Todd Eigenschink and Gerald Richter (listed as change in _04, but was lost!)
  • fixed Makefile.PL so it can deal with metacharacters when copying the apache source include files, otherwise src.pm breaks, thanks to Dan Peterson for the spot

Changes for version 1.07_04

  • fix "building mod_perl by hand" bug w/ 1.3bx spotted by Brian Mosley
  • no longer force 'PerlSendHeader On' for sub-requests which triggered a bug spotted by Doug Bagley and Gerald Richter
  • Fix "Attempt to free unreferenced scalar." during kill -HUP w/ PerlFreshRestart On and <Perl> in httpd.conf spotted by Brian Mosley
  • clear endav and stacked_handlers on FreshRestart
  • fix bug spotted by Gerald Richter where Apache->register_cleanup would cause a core dump
  • Apache->module will no longer eval "require $module", it will now return true if the module is in %INC, false otherwise
  • fix so END blocks encountered at startup are run at shutdown (I think one of the 1.07_xx version broke it)
  • If exists, Makefile.PL will add /usr/local/stronghold/conf/httpd.conf's StrongholdKey to t/conf/httpd.conf for 'make test' for you
  • Makefile.PL will edit Stronghold's Makefile to replace: "CFLAGS=$(CFLAGS)" with 'CFLAGS=$(CFLAGS)' so the SUBVERSION thang works
  • fix $r->custom_response problem spotted by Brian Mosley so it works with SERVER_ERROR
  • added new method child_terminate
  • fix $r->current_callback so it can be called during startup
  • perl Makefile.PL PERL_DEBUG=1 will: -add `-g' to EXTRA_CFLAGS -turn on PERL_TRACE -set PERL_DESTRUCT_LEVEL=2 -link against libperld if -e $Config{archlibexp}/CORE/libperld$Config{lib_ext}
  • Apache::Constants :common export tag no longer includes OPT_EXECCGI (was held off from 1.07_01's Changes Apache::Constants cleanup waiting to make sure HTML::Embperl and Apache::ePerl didn't rely on OPT_EXECCGI to be exported by default. both look fine now)
  • added workaround Apache::RedirectLogFix module to work around the re-introduced log bug below
  • to fix a double-header send bug spotted by Doug Bagley, backed out this Change from 1.06: Apache::Registry will return REDIRECT if $r->header_out("Location") so the request is logged properly, thanks to spot by Jon Drukman
  • added experimental PerlRestartHandler (enabled with PERL_RESTART_HANDLER=1, note: _not_ enabled with EVERYTHING=1)
  • moved Apache::sv_name function to the new Apache::Symbol package
  • Apache::StatINC will call Apache::Symbol's undef_functions method for .pm classes if PerlSetVar UndefOnReload is On
  • before re-compiling, Apache::Registry will now check if $package->can('undef_functions'), if so, invoke that method
  • added Apache::Symbol module with an undef_functions method
  • Apache->server_root_relative now defaults to "" when no filename/directory name argument is given (ie returns ServerRoot)
  • made PERL_TRACE more useful with levels set via environment variable MOD_PERL_TRACE: d - trace directive handling during config read s - trace processing of perl sections h - trace Perl*Handler callbacks g - trace global variable handling, intepreter allocation, END blocks, etc. all - all of the above
  • will add -DSTRONGHOLD to CFLAGS if build against stronghold, thanks to Todd R. Eigenschink
  • fix Makefile.PL's parsing of SERVER_SUBVERSION, spotted by Paul Sutton
  • $r->send_http_header can now accept an optional second argument, if present will set $r->content_type
  • PerlPassEnv, PerlRequire and PerlModule now use an array_header structure for internal storage
  • 1.3b4 compat:
  • adapt to new table api changes (with help from Rob Hartill and Dean Gaudet)
  • adapt to *.h move to the new src/include directory
  • Apache::Status enhancements:
  • "Loaded Modules" will now report last modified time
  • "packages" are now links, click, symbol table dump
  • now that packages are links, no longer do recursive dump (recurse yourself via hyperlinks, much easier to read!!!)
  • hashes, scalars and arrays are now links, click, Data::Dumper Dump (only if PerlSetVar StatusDumper is On)
  • functions are now links, click, subroutine info (requires the B module)
  • dump of any type also has a link "Peek Dump" (only if PerlSetVar StatusPeek is On and Apache::Peek is installed)
  • dump of any type also has a link "OP Tree Graph" (only if PerlSetVar StatusGraph is On) (requires the B and B::Graph modules and the dot program)
  • added t/modules/status test
  • with the -DPERL_MARK_WHERE experimental feature enabled, there's a chance you'll never see "Use of uninitialized value." again without some more useful information, nor will you see '-e' reported outside of Apache::Registry
  • perl_destruct_level can now be set via the environment variable PERL_DESTRUCT_LEVEL or -DPERL_DESTRUCT_LEVEL
  • turn default perl_destruct_level down from 2 to Perl's default of 0
  • use a copy of apache's ap_cpystrn against versions < 1.3b4-dev
  • got rid of "Use of uninitialized value." warning in perl_util.c seen when running HTML::Embperl, hunted down by Todd Eigenschink and Gerald Richter
  • added modules/src test for Apache::src
  • documented Apache::src
  • the Apache::src->new method will now default to the first auto/Apache/include directory found relative to @INC
  • the apache header files (*.h) will now be installed in $(INST_ARCHLIB)/auto/Apache/include
  • fix $Apache::ServerStarting bug that broke 'make test' w/ ApacheSSL and Stronghold spotted by Vivek Khera
  • remove the need for File::Copy's mv() function, since it can't seem to decide if it has one or not
  • _03's new tests assumed PerlCleanupHandler was enabled, fixed now thanks to spot by Rob Hartill
  • Makefile.PL will now chmod a+x t/net/perl/* t/net/perl/io/* thanks to Rob Hartill
  • experimental features can be enabled with -DDEFINEs instead of $variables or %ENV, changes to Makefile.PL make them simple to add, see eg/makepl_args.mod_perl for even simpler
  • added eg/makepl_args.mod_perl
  • the makepl_args.mod_perl can now have multiple lines, space, #comments and empty newlines are ignored, stops reading if it hits __END__
  • Makefile.PL will now also look for $ENV{HOME}/.makepl_args.mod_perl and read in if exists
  • before clearing handlers stacked via Apache->push_handlers at the end of each request, save the PerlChildExitHandler stack and putback after the clear. this way, modules pulled in at server startup can say: Apache->push_handlers(PerlChildExitHandler => sub {})
  • a "top-level" mod_perl per-directory directive would cause core dump inside <Perl> sections. now trap that and exit with message that the directive should be inside a containter e.g. %Location, %VirtualHost (not sure what the real problem is here)
  • re-work PERL_SECTIONS_SELF_BOOT stuff so it calls perl_section() directly, rather than perl_eat_config_string("<Perl>\n</Perl>"), because:
  • it no longer core dumps when a "top-level" per-server directive is found
  • it no longer requires 1.3b3+ (1.2.x will work)
  • it is faster
  • PerlModule/PERL_SECTIONS_SELF_BOOT will delete $INC{$PerlModule} on the first config read pass, so it's re-read on the second pass
  • if ($] < 5.004_04) Makefile.PL will warn that users should upgrade to

Changes for version 1.07_03

  • removed "[notice] mod_perl restarted" message since it doesn't go to the error_log as it should, spotted by Vivek Khera and Paul Phillips
  • fixed corrupted $ENV{TZ} spotted by Michael Parker
  • cut out 'make test' error_log noise, anything there now should only be an error or a non-error [notice]
  • make Apache::Resource simpler to configure, to use w/ all defaults (1.3bx + PerlChildInitHandler required): PerlSetEnv PERL_RLIMIT_DEFAULTS On PerlModule Apache::Resource
  • Makefile.PL will now: mv "t/conf/httpd.conf", "t/conf/httpd.conf.old" so httpd.conf is re-generated when Makefile.PL is re-run
  • added new module Apache::src for finding it and picking out bits-n-pieces
  • get rid of some <Perl> section warnings with help from Doug Bagley
  • improved register_cleanup tests
  • applied $r->register_cleanup patch from Doug Bagley to properly call MP_RCLEANUP_off after cleanups are run
  • perl Makefile.PL can now accept ADD_MODULE, Makefile.PL will (s/,/ /g) and uncomment the list of modules from src/Configuration e.g.: ADD_MODULE=unique_id,proxy,info
  • perl Makefile.PL can now accept PERL_EXTRA_CFLAGS, Makefile.PL will (s/,/ /g) which are added to EXTRA_CFLAGS e.g.: PERL_EXTRA_CFLAGS=-DFOO=1,-DBAR=2
  • if the file `makepl_args.modperl' is present in . or .. it will be read into @ARGV, e.g. might contain EVERYTHING=1 DO_HTTPD=1
  • fixes for 1.3b4-dev compat
  • get rid of AuthName space in generated .htaccess file for internal/hooks test
  • if a PerlModule defines something in %Apache::ReadConfig <Perl> sections are run without need to actually have <Perl></Perl> in httpd.conf, i.e. httpd.conf could be nothing more than: PerlModule Apache::httpd_conf whilst experimental, enable by setting the envrionment variable PERL_SECTIONS_SELF_BOOT to something true
  • experimental feature, modules can 'exit|die AUTH_REQUIRED;' or with any HTTP error code and that response is sent rather than SERVER_ERROR to test enable by setting $Apache::ERRSV_CAN_BE_HTTP = 1
  • take CGI.pm version check out of Apache::Registry, now that we require 5.004+, they'll have at least 2.36
  • get rid of "Use of uninitialized value at -e line 65535" warning caused by perl_run_rgy_endav() spotted by Doug Bagley
  • if there is an error inside <Perl>, filename and line number are now displayed in the error message, e.g. syntax error at t/conf/httpd.conf line 25 instead of syntax error at (eval 1) line 2
  • Apache::RegistryLoader->handler will now strip leading '/' when $uri is server_root_relative and no $filename is present
  • Apache::Status menu item "Perl Section Configuration" (only if $Apache::ReadConfig is true)
  • added Apache::Status menu item "Enabled mod_perl Hooks"
  • added mod_perl.pm functions hook() and hooks()
  • go back to internal <Perl> sections package name ApacheReadConfig
  • Apache::PerlSections stuff:
  • added handy store method for writing dump() to disk
  • fixed self-test
  • updated docs to reflect new output format
  • Apache::test stuff:
  • added run method
  • added MM_test method for Makefile.PL's to say: *MY::test = \&Apache::test::MM_test
  • some httpd_conf.pm stuff:
  • added server_url method
  • added catch_signals method to terminate httpd on __DIE__ or INT ($conf->server_start calls this by default)
  • when httpd.conf is written, set BaseDir in a BEGIN block
  • drop trailing slash from Alias'
  • fix write() method's assignment of %$self to *Apache::ReadConfig::
  • fix possible core dump when calling gv_fetchmethod()

Changes for version 1.07_02

  • fixed perl.exp thang on aix
  • added tests t/modules/httpdconf.t and t/modules/perlsections.t
  • added Apache::httpd_conf module
  • if variable $Apache::ReadConfig is true, don't undef the <Perl> section eval package %Apache::ReadConfig::
  • output of Apache::PerlSections->dump is now suitable to be eval'd
  • added Apache->httpd_conf method (just pushes into @Apache::ReadConfig::PerlConfig and requires 1.3b3+)
  • renamed package <Perl> sections are proccessed in from ApacheReadConfig to Apache::ReadConfig
  • ensure values of %Location keys, etc. in <Perl> sections are HASH refs to stop possible core dump spotted by Stuart Frew
  • fixed memory leak in $r->push_handlers() with help from Gerald Richter
  • added new items to Apache::Status: "Environment", "Perl Configuration", and "Signal Handlers"
  • when %ENV is setup, my_setenv() is now called so subprocesses will inherit
  • "top-level" PerlSetEnv variables will now be set during server startup
  • got rid of unintialized warning in Apache::Status
  • $r->custom_response will now add the `"' needed if arg is not a url or filename
  • added new Constants CONTINUE and NOT_AUTHORITATIVE as aliases for DECLINED
  • change the `PerlScript' directive name to `PerlRequire' as suggested by Dick Hardt (PerlScript will still work, but is not documented)
  • set variable $Apache::ServerStarting to 1 during perl_startup()
  • set variable $Apache::ServerReStarting to 1 during perl_restart()
  • Apache::SIG->set is now called at server startup by default
  • applied patch from Doug Bagley to stop possible infininite loop in Apache->read
  • create stacked_handlers = newHV() before modules are loaded, so PerlModule's can do things like: Apache->push_handlers(PerlChildInitHandler => sub { srand(time ^ $$); });
  • $r->args can now be modified as suggested by Joel Truher
  • remove obsolete (and broken) iedit of t/net/perl/cgi.pl thanks to Vivek Khera
  • Apache::Resource now correctly converts MB values

Changes for version 1.07_01

  • added t/internal/stacked test
  • updated the FAQ from Frank Cringle
  • added Apache::fork module which override's Perl's built-in fork() and provides a forkoption function, contributed by Michael Turner
  • can now build/run w/ 5.004_55 threaded Perl
  • added Apache::Status item for PerlScripts
  • there can now be multiple PerlScript files in *.conf and .htaccess (same behavior as PerlModule)
  • ServerRoot is now pushed into @INC at server startup
  • filename argument to log_reason is now optional, defaults to $r->uri
  • Apache::Constants cleanup:
    • @EXPORT now only holds items in :common
    • re-organized tags (adding some new ones)
    • added some documentation!
  • $r->get_remote_host can now take an optional type argument, default is still REMOTE_HOST, other valid options are Apache::Constants :remotehost
  • added new Apache::Constants tag :remotehost (for $r->get_remote_host) with new constants: REMOTE_HOST REMOTE_NAME REMOTE_NOLOOKUP REMOTE_DOUBLE_REV
  • added new Apache::Constants tag :satisfy (for $r->satisfies) with new constants: SATISFY_ALL, SATISFY_ANY, SATISFY_NOSPEC
  • added new method $r->satisfies
  • added new method $r->some_auth_required
  • `METHODS' Apache::Constant added to import tag :methods
  • perl_stdout2client() will now set $| instead of perl_handler(), so thanks to Salvador Ortiz Garcia for the tip
  • PerlSetEnv will now call my_setenv() underneath thanks to Tim Bunce for the tip
  • fix mod_perl_traps.pod typo so it can install, spotted by Brian Tiemann

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/02/10 08:58:18 $)
running CGI scripts under mod_perl ($Date: 1998/02/10 08:58:18 $)
frequently asked questions about mod_perl ($Date: 1998/02/10 08:58:18 $)
Embed a Perl interpreter in the Apache HTTP server
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
Utilities for debugging embedded perl code
Utilities for mod_perl/mod_include integration
OPT_* defines from httpd_core.h
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 lib/Apache/httpd_conf.pm
in lib/Apache/test.pm
in lib/Apache/Registry.pm
in lib/mod_perl.pm