(PHP 4, PHP 5)
apache_lookup_uri — Führt eine Teilanfrage für einen angegebenen URI durch und liefert alle Informationen darüber zurück
Die Funktion führt eine Teilanfragefür einen URI durch. Diese geht gerade weit genug, um alle wichtigen Informationen über die angegebene Ressource zu erhalten.
Diese Funktion wird nur unterstützt, wenn PHP als Apache-Modul installiert wurde.
Der Dateiname (URI), der angefragt wird.
Ein Objekt, das die URI-relevanten Informationen enthält. Die Eigenschaften dieses Objekts sind:
Beispiel #1 apache_lookup_uri()-Beispiel
<?php
$info = apache_lookup_uri('index.php?var=value');
print_r($info);
if (file_exists($info->filename)) {
echo 'file exists!';
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
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!
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 :-(.
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]
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.