stas 02/05/19 02:43:55
Modified: src/docs/2.0/user/compat compat.pod
Log:
- add a few notes
- add the missing markup
- do some reorg putting more desired things on top
Revision Changes Path
1.15 +126 -107 modperl-docs/src/docs/2.0/user/compat/compat.pod
Index: compat.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/compat/compat.pod,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- compat.pod 17 May 2002 17:59:55 -0000 1.14
+++ compat.pod 19 May 2002 09:43:55 -0000 1.15
@@ -1,6 +1,6 @@
=head1 NAME
-mod_perl 1.x versus mod_perl 2.x compatibility issues
+Migrating from mod_perl 1.x to mod_perl 2.x
=head1 Description
@@ -10,92 +10,117 @@
+=head1 Configuration Porting
-=head1 Code Porting from 1.x to 2.x
+To migrate the configuration files to the mod_perl 2.x syntax, you may
+need to do certain adjustments if you use any of the configuration
+directives listed in the following sections.
-mod_perl 2.x is trying hard to be back compatible with mod_perl
-1.x. However some things (mostly APIs) have been changed. In order to
-gain a complete compatibilty with 1.x while running under 2.x, you
-should load the compatibility module as early as possible:
+Remember that if you use any of the new directives, your configuration
+won't work anymore with mod_perl 1.x.
- use Apache::compat;
+=head2 C<PerlHandler>
-at the server startup. And unless there are forgotten things or bugs,
-your code should work without any changes under 2.x series.
+C<PerlHandler> was replaced with C<PerlResponseHandler>.
-If you have mod_perl 1.x and 2.x installed on the same system and the
-two use the same perl libraries directories (e.g. I</usr/lib/perl5>),
-make sure to load first the C<Apache2> module which will perform the
-necessary adjustments to C<@INC>.
+=head2 C<PerlSendHeader>
- use Apache2; # if you have 1.x and 2.x installed
- use Apache::compat;
+C<PerlSendHeader> was replaced with C<PerlOptions +/-ParseHeaders>
+directive.
-However, unless you want to keep the 1.x compatibility, you should try
-to remove the compatibility layer and adjust your code to work under
-2.x without it. You want to do it mainly for the performance
-improvement.
+ PerlSendHeader On => Options +ParseHeaders
+ PerlSendHeader Off => Options -ParseHeaders
-This document explains what APIs have changed and what new APIs should
-be used instead.
+=head2 C<PerlSetupEnv>
+C<PerlSetupEnv> was replaced with C<PerlOptions +/-SetupEnv>
+directive.
+ PerlSetupEnv On => Options +SetupEnv
+ PerlSetupEnv Off => Options -SetupEnv
+=head2 C<PerlTaintCheck>
+The tainting mode now can be turned on with:
+ PerlSwitches -T
+The default is I<Off>. You cannot turn it I<Off> once it's turned
+I<On>.
+=head2 C<PerlWarn>
-=head1 Configuration Directives
+Warnings now can be enabled globally with:
-To migrate the configuration files to the 2.x syntax, you may need to
-do certain adjustments if you use any of the configuration directives
-listed in the following sections.
+ PerlSwitches -w
-Remember that if you use any of the new directives you configuration
-won't work anymore with mod_perl 1.x.
-=head2 PerlHandler
-Replaced with C<PerlResponseHandler>.
-=head2 PerlSendHeader
-Replaced with C<PerlOptions +/-ParseHeaders> directive.
- PerlSendHeader On => Options +ParseHeaders
- PerlSendHeader Off => Options -ParseHeaders
+=head1 Code Porting
-=head2 PerlSetupEnv
+mod_perl 2.x is trying hard to be back compatible with mod_perl
+1.x. However some things (mostly APIs) have been changed. In order to
+gain a complete compatibilty with 1.x while running under 2.x, you
+should load the compatibility module as early as possible:
-Replaced with C<PerlOptions +/-SetupEnv> directive.
+ use Apache::compat;
- PerlSendHeader On => Options +SetupEnv
- PerlSendHeader Off => Options -SetupEnv
+at the server startup. And unless there are forgotten things or bugs,
+your code should work without any changes under 2.x series.
-=head2 PerlTaintCheck
+If you have mod_perl 1.x and 2.x installed on the same system and the
+two use the same perl libraries directories (e.g. I</usr/lib/perl5>),
+make sure to load first the C<Apache2> module which will perform the
+necessary adjustments to C<@INC>.
-Now can be turned on with:
+ use Apache2; # if you have 1.x and 2.x installed
+ use Apache::compat;
- PerlSwitches -T
+However, unless you want to keep the 1.x compatibility, you should try
+to remove the compatibility layer and adjust your code to work under
+2.x without it. You want to do it mainly for the performance
+improvement.
-The default is I<Off>. You cannot turn it I<Off> once it's turned
-I<On>.
+This document explains what APIs have changed and what new APIs should
+be used instead.
-=head2 PerlWarn
-Now can be turned on with:
+=head1 The C<Apache::Registry> Family
- PerlSwitches -w
+C<Apache::Registry>, C<Apache::PerlRun> and other modules from the
+registry family now live in the C<ModPerl::> namespace to avoid
+collisions with the versions from 1.x.
+
+To run the C<Apache::Registry> module from mod_perl 1.x you have to
+load C<Apache::compat> at the startup:
+
+ file:startup.pl:
+ ----------------
+ use Apache2; # if you have 1.x and 2.x installed
+ use Apache::compat ();
+ use lib ...; # to find 1.xx Apache::Registry
+then in I<httpd.conf>:
+ Alias /perl /path/to/perl/scripts
+ <Location /perl>
+ Options +ExecCGI
+ SetHandler perl-script
+ PerlResponseHandler Apache::Registry
+ </Location>
+Notice that C<Apache::compat> has to be loaded before C<CGI.pm> if the
+latter module is used.
+META: complete
-=head1 Apache::Constants
+=head1 C<Apache::Constants>
C<Apache::Constants> has been replaced by three classes:
@@ -128,11 +153,11 @@
-=head1 C<Apache::> functions
+=head1 C<Apache::>
-=head2 args()
+=head2 C<args()>
-$r->args() in 2.0 returns the query string without parsing and
+$r-E<gt>args() in 2.0 returns the query string without parsing and
splitting it into an array. You can also set the query string by
passing a string to this method.
@@ -141,20 +166,20 @@
XXX: When Apache::Request will be ported to 2.0, you can use its
params() and similar methods to do the parsing for you.
-=head2 chdir_file()
+=head2 C<chdir_file()>
XXX: Not implemented yet. And won't be implemented for the threaded
mpms, since chdir is not thread-safe.
-=head2 $r-E<gt>connection-E<gt>user
+=head2 C<$r-E<gt>connection-E<gt>user>
This method is deprecated in 1.x and $r-E<gt>user should be used
instead for both versions of mod_perl. C<Apache::user()> method is
available since mod_perl version 1.24_01.
-=head2 content()
+=head2 C<content()>
-$r->content() is not available in 2.0.
+$r-E<gt>content() is not available in 2.0.
XXX: the reason?
@@ -176,7 +201,7 @@
return $r->parse_args($buf)
}
-=head2 exit()
+=head2 C<exit()>
C<Apache::exit()> has been replaced with C<ModPerl::Util::exit()>,
which is a function (not a method) and accepts a single optional
@@ -185,7 +210,7 @@
See the L<ModPerl::Util> manpage for more information.
-=head2 finfo()
+=head2 C<finfo()>
XXX: not implemented yet. To be implemented. C<Apache::compat> handles
that for now with:
@@ -196,7 +221,7 @@
\*_;
}
-=head2 gensym()
+=head2 C<gensym()>
Since Perl 5.6.1 filehandlers are autovivified and there is no need
for C<Apache::gensym()> function, since now it can be done with:
@@ -206,7 +231,7 @@
Though the C function modperl_perl_gensym() is available for XS/C
extensions writers.
-=head2 header_in(), header_out() and err_header_out()
+=head2 C<header_in()>, C<header_out()> and C<err_header_out()>
C<header_in()>, C<header_out()> and C<err_header_out()> are not
available in 2.0. Use C<headers_in()>, C<headers_out()> and
@@ -224,7 +249,7 @@
-=head2 log_reason()
+=head2 C<log_reason()>
C<log_reason()> has been replaced with a set of dedicated functions:
C<Apache::RequestRec::log_error()>, C<Apache::ServerRec::log_error()>,
@@ -234,13 +259,13 @@
manpages for more information.
-=head2 module()
+=head2 C<module()>
C<Apache::module> has been replaced with the function
C<Apache::Module::loaded()>, which now accepts a single argument: the
module name.
-=head2 register_cleanup()
+=head2 C<register_cleanup()>
register_cleanup() has been replaced with
C<APR::Pool::cleanup_register()> which accepts the pool object as the
@@ -253,11 +278,23 @@
See the L<APR::Pool> manpage for more information.
-=head2 $r-E<gt>request
+=head2 C<$r-E<gt>request()>
Use C<Apache::request()>.
-=head2 send_fd() and send_fd_length()
+Notice that C<Apache-E<gt>request> is deprecated. It's error-prone
+and hurts performance when using threaded MPMs, since it has to use
+thread local storage.
+
+For any location that uses C<Apache-E<gt>request>, you need to
+configure:
+
+ <Location ...>
+ PerlOptions +GlobalRequest
+ ...
+ </Location>
+
+=head2 C<send_fd()> and C<send_fd_length()>
currently available only in the 1.x compatibility layer. The problem
is that Apache has changed the API and the its functionality. See the
@@ -265,7 +302,7 @@
XXX: needs a better resolution
-=head2 $r-E<gt>server_root_relative
+=head2 C<$r-E<gt>server_root_relative>
C<Apache::server_root_relative> is a function in 2.0.
@@ -282,19 +319,12 @@
The methods from module C<Apache::File> have been either moved to
other packages or removed.
-=head2 discard_request_body(), meets_conditions(), set_content_length(),
set_etag(), set_last_modified() and update_mtime()
-
-These functions now belong to the module L<Apache::Response>.
-
-=head2 mtime()
-
-mtime() now belongs to the module L<Apache::RequestRec>.
-=head2 open() and close()
+=head2 C<open()> and C<close()>
See the implementation in the module C<Apache::compat>.
-=head2 tmpfile()
+=head2 C<tmpfile()>
See C<File::Temp>, or the implementation in the module
C<Apache::compat>.
@@ -302,29 +332,44 @@
It was removed since Apache 2.0 doesn't have the API for this method
anymore.
-=head1 Apache::Util
+=head2 C<mtime()>
+
+mtime() now belongs to the module L<Apache::RequestRec>.
+
+
+=head2 C<discard_request_body()>, C<meets_conditions()>,
C<set_content_length()>, C<set_etag()>, C<set_last_modified()> and
C<update_mtime()>
+
+These functions now belong to the module L<Apache::Response>.
+
+
+
+
+
+
+=head1 C<Apache::Util>
A few C<Apache::Util> functions have changed their interface.
-=head2 Apache::Util::size_string
+=head2 C<Apache::Util::size_string>
C<Apache::Util::size_string> has been replaced with
C<APR::String::format_size>, which returns formatted strings of only 4
characters long. See the L<C<APR::String>> manpage for more
information.
-=head2 Apache::Util::unescape_uri()
+=head2 C<Apache::Util::unescape_uri()>
C<Apache::Util::unescape_uri()> is now C<Apache::unescape_url()>.
-=head1 Apache::URI
+=head1 C<Apache::URI>
-=head2 Apache::URI::parse
+=head2 C<Apache::URI-E<gt>parse($r, [$uri])>
-C<Apache::URI::parse()> has been replaced with C<APR::URI->parse()>,
-which is invoked as:
+C<Apache::URI-E<gt>parse()> has been replaced with
+C<APR::URI-E<gt>parse()>, which is invoked as:
- APR::URI->parse($r->pool, $uri);
+ my $curl = $r->construct_url;
+ APR::URI->parse($r->pool, $curl);
See the L<APR::URI> manpage for more information.
@@ -364,37 +409,11 @@
subroutine attributes.
-=head1 Apache::Registry and Apache::PerlRun and Other mod_cgi Emulators
-C<Apache::Registry>, C<Apache::PerlRun> and other modules from the
-registry family now live in the C<ModPerl::> namespace to avoid
-collisions with the versions from 1.x.
-To run the C<Apache::Registry> module from mod_perl 1.x you have to
-load C<Apache::compat> at the startup:
-
- file:startup.pl:
- ----------------
- use Apache2; # if you have 1.x and 2.x installed
- use Apache::compat ();
- use lib ...; # to find 1.xx Apache::Registry
-
-then in I<httpd.conf>:
-
- Alias /perl /path/to/perl/scripts
- <Location /perl>
- Options +ExecCGI
- SetHandler perl-script
- PerlResponseHandler Apache::Registry
- </Location>
-
-Notice that C<Apache::compat> has to be loaded before C<CGI.pm> if the
-latter module is used.
-
-META: complete
-=head1 Apache::StatINC
+=head1 C<Apache::StatINC>
C<Apache::StatINC> has been replaced by C<Apache::Reload>.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]