stream_resolve_include_path() seems to cache it's output. After I renamed a file, I had to restart Apache for stream_resolve_include_path() to not return non-existing file name. This was on Windows.
(PHP 5 >= 5.3.2, PHP 7, PHP 8)
stream_resolve_include_path — Resuelve un nombre de fichero siguiendo las reglas de la ruta de inclusión
Resuelve el nombre de fichero filename
utilizando
la ruta de inclusión, siguiendo las mismas reglas que las funciones
fopen()/include.
filename
El nombre de fichero a resolver.
Devuelve un chaîne de caractères que contiene el nombre de fichero absoluto resuelto,
o false
en caso de error.
Ejemplo #1 Ejemplo con stream_resolve_include_path()
Ejemplo simple de utilización.
<?php
var_dump(stream_resolve_include_path("test.php"));
?>
El resultado del ejemplo sería algo similar a:
string(22) "/var/www/html/test.php"
stream_resolve_include_path() seems to cache it's output. After I renamed a file, I had to restart Apache for stream_resolve_include_path() to not return non-existing file name. This was on Windows.
In some case like this, you can't use `realpath()` or `file_exists()` without resolve its path.
Example:
file.php
subfolder/
..|- included.php
..|- subfolder/
.........|- another-included.php
file.php contents:
```
<?php
var_dump(file_exists('subfolder/included.php'));// true
include 'subfolder/included.php';
?>
```
subfolder/included.php contents:
```
<?php
var_dump(file_exists('subfolder/another-included.php'));// false but the file is really exists.
var_dump(file_exists(stream_resolve_include_path('subfolder/another-included.php')));// with `stream_resolve_include_path()` function, it returns true now.
include 'subfolder/another-included.php';// working fine, no errors.
?>
```
subfolder/subfolder/another-included.php contents:
```
<?php
echo 'Hello world';
?>
```