apache_lookup_uri

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

apache_lookup_uri对指定 URI 执行部分请求并返回有关它的所有信息

说明

apache_lookup_uri(string $filename): object|false

这将对 URI 执行部分请求。它仅执行到足以获取有关给定资源的所有重要信息。

当 PHP 作为 Apache 模块 Web 服务器安装时,支持此函数。

参数

filename

正在请求的文件名(URI)。

返回值

一个包含相关 URI 信息的 object。此 object 的属性为

  • 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

如果失败,则返回 false

范例

范例 #1 apache_lookup_uri() 示例

<?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!

添加备注

用户贡献的备注 3 个备注

tester
16 年前
错误:使用 apache 2,apache_lookup_uri("/directory") 会输出警告并无法返回任何内容。apache_lookup_uri("/directory/") 可以工作。

另一个错误:virtual("something") 会强制进行头信息刷新。我知道这是有文档记录的,但如果它不这样做会更好。当使用 virtual() 包含动态文件(如 PHP 或 Perl 文件)时,您永远不希望刷新头信息,这使得 virtual() 无法用于大多数网站内容 :-(。
niels dot kootstra at gmail dot com
16 年前
这是一个非常有用的函数,但它没有显示所有输出。例如,我只看到
[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]
redbeard at mdjohnson dot nospam dot us
21 年前
一个有用的功能是,如果您启用了内容协商(Options MultiViews),Apache 会尽力为您解决协商。因此,www.example.com/blah 将解析为 /base/blah.php 或 /base/blah.html,甚至 /base/blah.en.html,具体取决于情况。
To Top