stream_resolve_include_path() 似乎会缓存其输出。在我重命名文件后,我必须重新启动 Apache 才能使 stream_resolve_include_path() 不返回不存在的文件名。这是在 Windows 上。
(PHP 5 >= 5.3.2, PHP 7, PHP 8)
stream_resolve_include_path — 解析包含路径中的文件名
filename
要解析的文件名。
示例 #1 stream_resolve_include_path() 示例
基本用法示例。
<?php
var_dump(stream_resolve_include_path("test.php"));
?>
以上示例将输出类似以下内容
string(22) "/var/www/html/test.php"
stream_resolve_include_path() 似乎会缓存其输出。在我重命名文件后,我必须重新启动 Apache 才能使 stream_resolve_include_path() 不返回不存在的文件名。这是在 Windows 上。
在某些情况下,如果不解析其路径,则无法使用 `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';
?>
```