Dutch PHP Conference 2025 - Call For Papers

apache_lookup_uri

(PHP 4, PHP 5, PHP 7, PHP 8)

apache_lookup_uriPerform a partial request for the specified URI and return all info about it

Опис

apache_lookup_uri(string $filename): object|false

This performs a partial request for a URI. It goes just far enough to obtain all the important information about the given resource.

Ця функція доступна, якщо PHP встановлено як модуль вебсервера Apache.

Параметри

filename

The filename (URI) that's being requested.

Значення, що повертаються

An object of related URI information. The properties of this object are:

  • status
  • the_request
  • status_line
  • method
  • content_type
  • handler
  • uri
  • filename
  • path_info
  • args
  • boundary
  • no_cache
  • no_local_copy
  • allowed
  • send_bodyct
  • bytes_sent
  • byterange
  • clength
  • unparsed_uri
  • mtime
  • request_time

Returns false on failure.

Приклади

Приклад #1 apache_lookup_uri() example

<?php
$info
= apache_lookup_uri('index.php?var=value');
print_r($info);

if (
file_exists($info->filename)) {
echo
'file exists!';
}
?>

Поданий вище приклад виведе щось схоже на:

stdClass Object
(
    [status] => 200
    [the_request] => GET /dir/file.php HTTP/1.1
    [method] => GET
    [mtime] => 0
    [clength] => 0
    [chunked] => 0
    [content_type] => application/x-httpd-php
    [no_cache] => 0
    [no_local_copy] => 1
    [unparsed_uri] => /dir/index.php?var=value
    [uri] => /dir/index.php
    [filename] => /home/htdocs/dir/index.php
    [args] => var=value
    [allowed] => 0
    [sent_bodyct] => 0
    [bytes_sent] => 0
    [request_time] => 1074282764
)
file exists!

add a note

User Contributed Notes 3 notes

up
0
tester
16 years ago
bug: with apache 2, apache_lookup_uri("/directory") spits out a warning and fails to return anything. apache_lookup_uri("/directory/") works.

another bug: virtual("something") forces a header flush. I know it's documented, but it would be rather wonderful if it didn't do this. You never ever want to flush headers when you're using virtual() to include a dynamic file such as a PHP or Perl file, which excludes virtual() from being used on most of any website's contents :-(.
up
0
niels dot kootstra at gmail dot com
16 years ago
It's a very usefull function but it doesn't show all outputs. For example I only see:
[status]
[the_request]
[method]
[mtime]
[clength]
[chunked]
[content_type]
[no_cache]
[no_local_copy]
[unparsed_uri]
[uri]
[filename]
[path_info]
[allowed]
[sent_bodyct]
[bytes_sent]
[request_time]
up
0
redbeard at mdjohnson dot nospam dot us
21 years ago
A useful feature is that if you have content negotiation on (Options MultiViews) Apache will resolve the negotiation for you if possible. Thus www.example.com/blah will resolve to /base/blah.php or /base/blah.html or even /base/blah.en.html as appropriate.
To Top