PHP Conference Japan 2024

stream_resolve_include_path

(PHP 5 >= 5.3.2, PHP 7, PHP 8)

stream_resolve_include_path解析包含路径中的文件名

描述

stream_resolve_include_path(string $filename): string|false

根据与 fopen()/include 相同的规则,解析包含路径中的 filename

参数

filename

要解析的文件名。

返回值

返回包含已解析绝对文件名的 string,如果失败则返回 false

示例

示例 #1 stream_resolve_include_path() 示例

基本用法示例。

<?php
var_dump
(stream_resolve_include_path("test.php"));
?>

以上示例将输出类似以下内容

string(22) "/var/www/html/test.php"

添加注释

用户贡献注释 2 个注释

tambet dot matiisen at gmail dot com
11 年前
stream_resolve_include_path() 似乎会缓存其输出。在我重命名文件后,我必须重新启动 Apache 才能使 stream_resolve_include_path() 不返回不存在的文件名。这是在 Windows 上。
kawewong at gmail dot com
3 年前
在某些情况下,如果不解析其路径,则无法使用 `realpath()` 或 `file_exists()`。

示例

file.php
subfolder/
..|- included.php
..|- subfolder/
.........|- another-included.php

file.php 内容
```
<?php
var_dump
(file_exists('subfolder/included.php'));// true
include 'subfolder/included.php';
?>
```

subfolder/included.php 内容
```
<?php
var_dump
(file_exists('subfolder/another-included.php'));// false 但文件确实存在。
var_dump(file_exists(stream_resolve_include_path('subfolder/another-included.php')));// 使用 `stream_resolve_include_path()` 函数,它现在返回 true。
include 'subfolder/another-included.php';// 工作正常,没有错误。
?>
```

subfolder/subfolder/another-included.php 内容
```
<?php
echo 'Hello world';
?>
```
To Top