1docs::api::Apache2::ReqUuseesrtUCtoinlt(r3i)buted Perl Ddooccusm:e:natpait:i:oAnpache2::RequestUtil(3)
2
3
4
6 Apache2::RequestUtil - Perl API for Apache request record utils
7
9 use Apache2::RequestUtil ();
10
11 # add httpd config dynamically
12 $r->add_config(['require valid-user']);
13
14 # dump the request object as a string
15 print $r->as_string();
16
17 # default content_type
18 $content_type = $r->default_type();
19
20 # get PerlSetVar/PerlAddVar values
21 @values = $r->dir_config->get($key);
22
23 # get server docroot
24 $docroot = $r->document_root();
25
26 # set server docroot
27 $r->document_root($new_root);
28
29 # what are the registered perl handlers for a given phase
30 my @handlers = @{ $r->get_handlers('PerlResponseHandler') || [] };
31
32 # push a new handler for a given phase
33 $r->push_handlers(PerlCleanupHandler => \&handler);
34
35 # set handlers for a given phase (resetting previous values)
36 $r->set_handlers(PerlCleanupHandler => []);
37
38 # what's the request body limit
39 $limit = $r->get_limit_req_body();
40
41 # server and port names
42 $server = $r->get_server_name();
43 $port = $r->get_server_port();
44
45 # what string Apache is going to send for a given status code
46 $status_line = Apache2::RequestUtil::get_status_line(404);
47
48 # are we in the main request?
49 $is_initial = $r->is_initial_req();
50
51 # directory level PerlOptions flags lookup
52 $r->subprocess_env unless $r->is_perl_option_enabled('SetupEnv');
53
54 # current <Location> value
55 $location = $r->location();
56
57 # merge a <Location> container in a request object
58 $r->location_merge($location);
59
60 # create a new Apache2::RequestRec object
61 $r = Apache2::RequestRec->new($c);
62
63 # tell the client not to cache the response
64 $r->no_cache($boolean);
65
66 # share perl objects by reference like $r->notes
67 $r->pnotes($key => [$obj1, $obj2]);
68
69 # get HTML signature
70 $sig = $r->psignature($prefix);
71
72 # get the global request object (requires PerlOptions +GlobalRequest)
73 $r = Apache2::RequestUtil->request;
74
75 # insert auth credentials into the request as if the client did that
76 $r->set_basic_credentials($username, $password);
77
78 # slurp the contents of $r->filename
79 my $content = ${ $r->slurp_filename() };
80
81 # terminate the current child after this request
82 $r->child_terminate();
83
85 "Apache2::RequestUtil" provides the Apache request object utilities
86 API.
87
89 "add_config"
90 Dynamically add Apache configuration at request processing runtime:
91
92 $r->add_config($lines);
93 $r->add_config($lines, $override);
94 $r->add_config($lines, $override, $path);
95 $r->add_config($lines, $override, $path, $override_opts);
96
97 Configuration directives are processed as if given in a "<Location>"
98 block.
99
100 obj: $r ( "Apache2::RequestRec object" )
101 arg1: $lines (ARRAY ref)
102 An ARRAY reference containing configuration lines per element,
103 without the new line terminators.
104
105 opt arg2: $override ( "Apache2::Const override constant" )
106 Which allow-override bits are set
107
108 Default value is: "Apache2::Const::OR_AUTHCFG"
109
110 opt arg3: $path ( string )
111 Set the "Apache2::CmdParms object" "path" component. This is the
112 path of the "<Location>" block. Some directives need this, for
113 example "ProxyPassReverse".
114
115 If an empty string is passed a "NULL" pointer is passed further at
116 C-level. This is necessary to make something like this work:
117
118 $r->add_config( [
119 '<Directory />',
120 'AllowOverride Options AuthConfig',
121 '</Directory>',
122 ], ~0, '' );
123
124 Note: "AllowOverride" is valid only in directory context.
125
126 Caution: Some directives need a non-empty path otherwise they cause
127 segfaults. Thus, use the empty path with caution.
128
129 Default value is: "/"
130
131 opt arg4: $override_opts ( "Apache2::Const options constant" )
132 Apache limits the applicable directives in certain situations with
133 "AllowOverride". With Apache 2.2 comes the possibility to enable or
134 disable single options, for example
135
136 AllowOverride AuthConfig Options=ExecCGI,Indexes
137
138 Internally, this directive is parsed into 2 bit fields that are
139 represented by the $override and $override_opts parameters to
140 "add_config". The above example is parsed into an $override with 2
141 bits set, one for "AuthConfig" the other for "Options" and an
142 $override_opts with 2 bits set for ExecCGI and Indexes.
143
144 When applying other directives, for example "AuthType" or "Options"
145 the appropriate bits in $override must be set. For the "Options"
146 directive additionally $override_opts bits must be set.
147
148 The $override and $override_opts parameters to "add_config" are
149 valid while applying $lines.
150
151 $override_opts is new in Apache 2.2. The mod_perl implementation
152 for Apache 2.0 lets you pass the parameter but ignores it.
153
154 Default for $override_opts is: "Apache2::Const::OPT_UNSET" |
155 "Apache2::Const::OPT_ALL" | "Apache2::Const::OPT_INCNOEXEC" |
156 "Apache2::Const::OPT_SYM_OWNER" | "Apache2::Const::OPT_MULTI"
157
158 That means, all options are allowed.
159
160 ret: no return value
161 since: 2.0.00, $path and $override_opts since 2.0.3
162
163 See also: "$s->add_config"
164
165 For example:
166
167 use Apache2::RequestUtil ();
168 use Apache2::Access ();
169
170 $r->add_config(['require valid-user']);
171
172 # this regards the current AllowOverride setting
173 $r->add_config(['AuthName secret',
174 'AuthType Basic',
175 'Options ExecCGI'],
176 $r->allow_override, $path, $r->allow_override_opts);
177
178 "as_string"
179 Dump the request object as a string
180
181 $dump = $r->as_string();
182
183 obj: $r ( "Apache2::RequestRec object" )
184 ret: $dump ( string )
185 since: 2.0.00
186
187 Dumps various request and response headers (mainly useful for
188 debugging)
189
190 "child_terminate"
191 Terminate the current worker process as soon as the current request is
192 over
193
194 $r->child_terminate();
195
196 obj: $r ( "Apache2::RequestRec object" )
197 ret: no return value
198 since: 2.0.00
199
200 This method is not supported in threaded MPMs
201
202 "default_type"
203 Retrieve the value of the DefaultType directive for the current
204 request. If not set "text/plain" is returned.
205
206 $content_type = $r->default_type();
207
208 obj: $r ( "Apache2::RequestRec object" )
209 The current request
210
211 ret: $content_type ( string )
212 The default type
213
214 since: 2.0.00
215 removed from the "httpd" API in version 2.3.2
216
217 "dir_config"
218 "$r->dir_config()" provides an interface for the per-directory variable
219 specified by the "PerlSetVar" and "PerlAddVar" directives, and also can
220 be manipulated via the "APR::Table" methods.
221
222 $table = $r->dir_config();
223 $value = $r->dir_config($key);
224 @values = $r->dir_config->get($key);
225 $r->dir_config($key, $val);
226
227 obj: $r ( "Apache2::RequestRec object" )
228 opt arg2: $key ( string )
229 Key string
230
231 opt arg3: $val ( string )
232 Value string
233
234 ret: ...
235 Depends on the passed arguments, see further discussion
236
237 since: 2.0.00
238
239 The keys are case-insensitive.
240
241 $apr_table = $r->dir_config();
242
243 dir_config() called in a scalar context without the $key argument
244 returns a HASH reference blessed into the "APR::Table" class. This
245 object can be manipulated via the "APR::Table" methods. For available
246 methods see the "APR::Table" manpage.
247
248 $value = $r->dir_config($key);
249
250 If the $key argument is passed in the scalar context only a single
251 value will be returned. Since the table preserves the insertion order,
252 if there is more than one value for the same key, the oldest value
253 assosiated with the desired key is returned. Calling in the scalar
254 context is also much faster, as it'll stop searching the table as soon
255 as the first match happens.
256
257 @values = $r->dir_config->get($key);
258
259 To receive a list of values you must use "get()" method from the
260 "APR::Table" class.
261
262 $r->dir_config($key => $val);
263
264 If the $key and the $val arguments are used, the set() operation will
265 happen: all existing values associated with the key $key (and the key
266 itself) will be deleted and $value will be placed instead.
267
268 $r->dir_config($key => undef);
269
270 If $val is undef the unset() operation will happen: all existing values
271 associated with the key $key (and the key itself) will be deleted.
272
273 "document_root"
274 Retrieve the document root for this server
275
276 $docroot = $r->document_root();
277 $docroot = $r->document_root($new_root);
278
279 obj: $r ( "Apache2::RequestRec object" )
280 The current request
281
282 opt arg1: $new_root
283 Sets the document root to a new value only for the duration of the
284 current request.
285
286 Note the limited functionality under threaded MPMs.
287
288 ret: $docroot ( string )
289 The document root
290
291 since: 2.0.00
292
293 "get_handlers"
294 Returns a reference to a list of handlers enabled for a given phase.
295
296 $handlers_list = $r->get_handlers($hook_name);
297
298 obj: $r ( "Apache2::RequestRec object" )
299 arg1: $hook_name ( string )
300 a string representing the phase to handle (e.g. "PerlLogHandler")
301
302 ret: $handlers_list (ref to an ARRAY of CODE refs)
303 a list of handler subroutines CODE references
304
305 since: 2.0.00
306
307 See also: "$s->add_config"
308
309 For example:
310
311 A list of handlers configured to run at the response phase:
312
313 my @handlers = @{ $r->get_handlers('PerlResponseHandler') || [] };
314
315 "get_limit_req_body"
316 Return the limit on bytes in request msg body
317
318 $limit = $r->get_limit_req_body();
319
320 obj: $r ( "Apache2::RequestRec object" )
321 The current request
322
323 ret: $limit (integer)
324 the maximum number of bytes in the request msg body
325
326 since: 2.0.00
327
328 "get_server_name"
329 Get the current request's server name
330
331 $server = $r->get_server_name();
332
333 obj: $r ( "Apache2::RequestRec object" )
334 The current request
335
336 ret: $server ( string )
337 the server name
338
339 since: 2.0.00
340
341 For example, consruct a hostport string:
342
343 use Apache2::RequestUtil ();
344 my $hostport = join ':', $r->get_server_name, $r->get_server_port;
345
346 "get_server_port"
347 Get the current server port
348
349 $port = $r->get_server_port();
350
351 obj: $r ( "Apache2::RequestRec object" )
352 The current request
353
354 ret: $port ( integer )
355 The server's port number
356
357 since: 2.0.00
358
359 For example, consruct a hostport string:
360
361 use Apache2::RequestUtil ();
362 my $hostport = join ':', $r->get_server_name, $r->get_server_port;
363
364 "get_status_line"
365 Return the "Status-Line" for a given status code (excluding the HTTP-
366 Version field).
367
368 $status_line = Apache2::RequestUtil::get_status_line($status);
369
370 arg1: $status (integer)
371 The HTTP status code
372
373 ret: $status_line ( string )
374 The Status-Line
375
376 If an invalid or unknown status code is passed, "500 Internal
377 Server Error" will be returned.
378
379 since: 2.0.00
380
381 For example:
382
383 use Apache2::RequestUtil ();
384 print Apache2::RequestUtil::get_status_line(400);
385
386 will print:
387
388 400 Bad Request
389
390 "is_initial_req"
391 Determine whether the current request is the main request or a sub-
392 request
393
394 $is_initial = $r->is_initial_req();
395
396 obj: $r ( "Apache2::RequestRec object" )
397 A request or a sub-request object
398
399 ret: $is_initial ( boolean )
400 If true -- it's the main request, otherwise it's a sub-request
401
402 since: 2.0.00
403
404 "is_perl_option_enabled"
405 check whether a directory level "PerlOptions" flag is enabled or not.
406
407 $result = $r->is_perl_option_enabled($flag);
408
409 obj: $r ( "Apache2::RequestRec object" )
410 arg1: $flag ( string )
411 ret: $result ( boolean )
412 since: 2.0.00
413
414 For example to check whether the "SetupEnv" option is enabled for the
415 current request (which can be disabled with "PerlOptions -SetupEnv")
416 and populate the environment variables table if disabled:
417
418 $r->subprocess_env unless $r->is_perl_option_enabled('SetupEnv');
419
420 See also: PerlOptions and the equivalent function for server level
421 PerlOptions flags.
422
423 "location"
424 Get the path of the <Location> section from which the current
425 "Perl*Handler" is being called.
426
427 $location = $r->location();
428
429 obj: $r ( "Apache2::RequestRec object" )
430 ret: $location ( string )
431 since: 2.0.00
432
433 "location_merge"
434 Merge a given "<Location>" container into the current request object:
435
436 $ret = $r->location_merge($location);
437
438 obj: $r ( "Apache2::RequestRec object" )
439 arg1: $location ( string )
440 The argument in a "<Location>" section. For example to merge a
441 container:
442
443 <Location /foo>
444 ...
445 </Location>
446
447 that argument will be /foo
448
449 ret: $ret ( boolean )
450 a true value if the merge was successful (i.e. the request
451 $location match was found), otherwise false.
452
453 since: 2.0.00
454
455 Useful for insertion of a configuration section into a custom
456 "Apache2::RequestRec" object, created via the
457 "Apache2::RequestRec->new()" method. See for example the Command Server
458 protocol example.
459
460 "new"
461 Create a new "Apache2::RequestRec" object.
462
463 $r = Apache2::RequestRec->new($c);
464 $r = Apache2::RequestRec->new($c, $pool);
465
466 obj: "Apache2::RequestRec" ( "Apache2::RequestRec class name" )
467 arg1: $c ("Apache2::Connection object")
468 opt arg2: $pool
469 If no $pool argument is passed, "$c->pool" is used. That means that
470 the created "Apache2::RequestRec" object will be valid as long as
471 the connection object is valid.
472
473 ret: $r ( "Apache2::RequestRec object" )
474 since: 2.0.00
475
476 It's possible to reuse the HTTP framework features outside the familiar
477 HTTP request cycle. It's possible to write your own full or partial
478 HTTP implementation without needing a running Apache server. You will
479 need the "Apache2::RequestRec" object in order to be able to reuse the
480 rich functionality supplied via this object.
481
482 See for example the Command Server protocol example which reuses HTTP
483 AAA model under non-HTTP protocol.
484
485 "no_cache"
486 Add/remove cache control headers:
487
488 $prev_no_cache = $r->no_cache($boolean);
489
490 obj: $r ( "Apache2::RequestRec object" )
491 arg1: $boolean ( boolean )
492 A true value sets the "no_cache" request record member to a true
493 value and inserts:
494
495 Pragma: no-cache
496 Cache-control: no-cache
497
498 into the response headers, indicating that the data being returned
499 is volatile and the client should not cache it.
500
501 A false value unsets the "no_cache" request record member and the
502 mentioned headers if they were previously set.
503
504 ret: $prev_no_cache ( boolean )
505 Should you care, the "no_cache" request record member value prior
506 to the change is returned.
507
508 since: 2.0.00
509
510 This method should be invoked before any response data has been sent
511 out.
512
513 "pnotes"
514 Share Perl variables between Perl HTTP handlers
515
516 # to share variables by value and not reference, $val should be a lexical.
517 $old_val = $r->pnotes($key => $val);
518 $val = $r->pnotes($key);
519 $hash_ref = $r->pnotes();
520
521 Note: sharing variables really means it. The variable is not copied.
522 Only its reference count is incremented. If it is changed after being
523 put in pnotes that change also affects the stored value. The following
524 example illustrates the effect:
525
526 my $v=1; my $v=1;
527 $r->pnotes( 'v'=>$v ); $r->pnotes->{v}=$v;
528 $v++; $v++;
529 my $x=$r->pnotes('v'); my $x=$r->pnotes->{v};
530
531 In both cases $x is 2 not 1. See also "Apache2::SafePnotes" on CPAN.
532
533 There has been a lot of discussion advocating for pnotes sharing
534 variables by value and not reference. Sharing by reference can create
535 'spooky action at a distance' effects when the sharing is assumed to
536 share a copy of the value. Tim Bunce offers the following summary and
537 suggestion for sharing by value.
538
539 What's wrong with this code:
540
541 sub foo {
542 my ($r, $status, $why) = @_;
543 $r->pnotes('foo', ($why) ? "$status:$why" : $status);
544 return;
545 }
546
547 Nothing, except it doesn't work as expected due to this pnotes bug: If
548 the same code is called in a sub-request then the pnote of $r->prev is
549 magically updated at a distance to the same value!
550
551 Try explain why that is to anyone not deeply familar with perl
552 internals!
553
554 The fix is to avoid pnotes taking a ref to the invisible op_targ
555 embededed in the code by passing a simple lexical variable as the
556 actual argument. That can be done in-line like this:
557
558 sub mark_as_internally_redirected {
559 my ($r, $status, $why) = @_;
560 $r->pnotes('foo', my $tmp = (($why) ? "$status:$why" : $status));
561 return;
562 }
563
564 obj: $r ( "Apache2::RequestRec object" )
565 opt arg1: $key ( string )
566 A key value
567
568 opt arg2: $val ( SCALAR )
569 Any scalar value (e.g. a reference to an array)
570
571 ret: (3 different possible values)
572 if both, $key and $val are passed the previous value for $key is
573 returned if such existed, otherwise "undef" is returned.
574
575 if only $key is passed, the current value for the given key is
576 returned.
577
578 if no arguments are passed, a hash reference is returned, which can
579 then be directly accessed without going through the "pnotes()"
580 interface.
581
582 since: 2.0.00
583
584 This method provides functionality similar to
585 ("Apache2::RequestRec::notes"), but values can be any Perl variables.
586 That also means that it can be used only between Perl modules.
587
588 The values get reset automatically at the end of each HTTP request.
589
590 Examples:
591
592 Set a key/value pair:
593
594 $r->pnotes(foo => [1..5]);
595
596 Get the value:
597
598 $val = $r->pnotes("foo");
599
600 $val now contains an array ref containing 5 elements (1..5).
601
602 Now change the existing value:
603
604 $old_val = $r->pnotes(foo => ['a'..'c']);
605 $val = $r->pnotes("foo");
606
607 $old_val now contains an array ref with 5 elements (1..5) and $val
608 contains an array ref with 3 elements 'a', 'b', 'c'.
609
610 Alternatively you can access the hash reference with all pnotes values:
611
612 $pnotes = $r->pnotes;
613
614 Now we can read what's in there for the key foo:
615
616 $val = $pnotes->{foo};
617
618 and as before $val still gives us an array ref with 3 elements 'a',
619 'b', 'c'.
620
621 Now we can add elements to it:
622
623 push @{ $pnotes{foo} }, 'd'..'f';
624
625 and we can try to retrieve them using the hash and non-hash API:
626
627 $val1 = $pnotes{foo};
628 $val2 = $r->pnotes("foo");
629
630 Both $val1 and $val2 contain an array ref with 6 elements (letters 'a'
631 to 'f').
632
633 Finally to reset an entry you could just assign "undef" as a value:
634
635 $r->pnotes(foo => undef);
636
637 but the entry for the key foo still remains with the value "undef". If
638 you really want to completely remove it, use the hash interface:
639
640 delete $r->pnotes->{foo};
641
642 "psignature"
643 Get HTML describing the address and (optionally) admin of the server.
644
645 $sig = $r->psignature($prefix);
646
647 obj: $r ( "Apache2::RequestRec" )
648 arg1: $prefix ( string )
649 Text which is prepended to the return value
650
651 ret: $sig ( string )
652 HTML text describing the server. Note that depending on the value
653 of the "ServerSignature" directive, the function may return the
654 address, including the admin information or nothing at all.
655
656 since: 2.0.00
657
658 "request"
659 Get/set the ( "Apache2::RequestRec object" ) object for the current
660 request.
661
662 $r = Apache2::RequestUtil->request;
663 Apache2::RequestUtil->request($new_r);
664
665 obj: "Apache2" (class name)
666 The Apache class name
667
668 opt arg1: $new_r ( "Apache2::RequestRec object" )
669 ret: $r ( "Apache2::RequestRec object" )
670 since: 2.0.00
671
672 The get-able part of this method is only available if "PerlOptions
673 +GlobalRequest" is in effect or if "Apache2->request($new_r)" was
674 called earlier. So instead of setting "PerlOptions +GlobalRequest", one
675 can set the global request from within the handler.
676
677 "push_handlers"
678 Add one or more handlers to a list of handlers to be called for a given
679 phase.
680
681 $ok = $r->push_handlers($hook_name => \&handler);
682 $ok = $r->push_handlers($hook_name => ['Foo::Bar::handler', \&handler2]);
683
684 obj: $r ( "Apache2::RequestRec object" )
685 arg1: $hook_name ( string )
686 the phase to add the handlers to
687
688 arg2: $handlers ( CODE ref or SUB name or an ARRAY ref )
689 a single handler CODE reference or just a name of the subroutine
690 (fully qualified unless defined in the current package).
691
692 if more than one passed, use a reference to an array of CODE refs
693 and/or subroutine names.
694
695 ret: $ok ( boolean )
696 returns a true value on success, otherwise a false value
697
698 since: 2.0.00
699 See also: "$s->add_config"
700
701 Note that to push input/output filters you have to use
702 "Apache2::Filter" methods: "add_input_filter" and
703 "add_output_filter".
704
705 Examples:
706
707 A single handler:
708
709 $r->push_handlers(PerlResponseHandler => \&handler);
710
711 Multiple handlers:
712
713 $r->push_handlers(PerlFixupHandler => ['Foo::Bar::handler', \&handler2]);
714
715 Anonymous functions:
716
717 $r->push_handlers(PerlLogHandler => sub { return Apache2::Const::OK });
718
719 "set_basic_credentials"
720 Populate the incoming request headers table ("headers_in") with
721 authentication headers for Basic Authorization as if the client has
722 submitted those in first place:
723
724 $r->set_basic_credentials($username, $password);
725
726 obj: $r ( "Apache2::RequestRec object" )
727 arg1: $username ( string )
728 arg2: $password ( string )
729 ret: no return value
730 since: 2.0.00
731
732 See for example the Command Server protocol example which reuses HTTP
733 AAA model under non-HTTP protocol.
734
735 "set_handlers"
736 Set a list of handlers to be called for a given phase. Any previously
737 set handlers are forgotten.
738
739 $ok = $r->set_handlers($hook_name => \&handler);
740 $ok = $r->set_handlers($hook_name => ['Foo::Bar::handler', \&handler2]);
741 $ok = $r->set_handlers($hook_name => []);
742 $ok = $r->set_handlers($hook_name => undef);
743
744 obj: $r ( "Apache2::RequestRec object" )
745 arg1: $hook_name ( string )
746 the phase to set the handlers in
747
748 arg2: $handlers (CODE ref or SUB name or an ARRAY ref)
749 a reference to a single handler CODE reference or just a name of
750 the subroutine (fully qualified unless defined in the current
751 package).
752
753 if more than one passed, use a reference to an array of CODE refs
754 and/or subroutine names.
755
756 if the argument is "undef" or "[]" the list of handlers is reset to
757 zero.
758
759 ret: $ok ( boolean )
760 returns a true value on success, otherwise a false value
761
762 since: 2.0.00
763
764 See also: "$s->add_config"
765
766 Examples:
767
768 A single handler:
769
770 $r->set_handlers(PerlResponseHandler => \&handler);
771
772 Multiple handlers:
773
774 $r->set_handlers(PerlFixupHandler => ['Foo::Bar::handler', \&handler2]);
775
776 Anonymous functions:
777
778 $r->set_handlers(PerlLogHandler => sub { return Apache2::Const::OK });
779
780 Reset any previously set handlers:
781
782 $r->set_handlers(PerlCleanupHandler => []);
783
784 or
785
786 $r->set_handlers(PerlCleanupHandler => undef);
787
788 "slurp_filename"
789 Slurp the contents of "$r->filename":
790
791 $content_ref = $r->slurp_filename($tainted);
792
793 obj: $r ( "Apache2::RequestRec object" )
794 arg1: $tainted (number)
795 If the server is run under the tainting mode ("-T") which we hope
796 you do, by default the returned data is tainted. If an optional
797 $tainted flag is set to zero, the data will be marked as non-
798 tainted.
799
800 Do not set this flag to zero unless you know what you are doing,
801 you may create a security hole in your program if you do. For more
802 information see the perlsec manpage.
803
804 If you wonder why this option is available, it is used internally
805 by the "ModPerl::Registry" handler and friends, because the CGI
806 scripts that it reads are considered safe (you could just as well
807 "require()" them).
808
809 ret: $content_ref ( SCALAR ref )
810 A reference to a string with the contents
811
812 excpt: "APR::Error"
813 Possible error codes could be: "APR::Const::EACCES" (permission
814 problems), "APR::Const::ENOENT" (file not found), and others. For
815 checking such error codes, see the documentation for, for example,
816 "APR::Status::is_EACCES" and "APR::Status::is_ENOENT".
817
818 since: 2.0.00
819
820 Note that if you assign to "$r->filename" you need to update its stat
821 record.
822
824 mod_perl 2.0 documentation.
825
827 mod_perl 2.0 and its core modules are copyrighted under The Apache
828 Software License, Version 2.0.
829
831 The mod_perl development team and numerous contributors.
832
833
834
835perl v5.32.0 2020-07-28docs::api::Apache2::RequestUtil(3)