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 — Résout un nom de fichier suivant les règles du chemin d'inclusion
Résout le nom de fichier filename
en utilisant
le chemin d'inclusion, en utilisant les mêmes règles que les fonctions
fopen()/include.
filename
Le nom de fichier à résoudre.
Retourne une chaîne de caractères contenant le nom de fichier absolu résolu,
ou false
si une erreur survient.
Exemple #1 Exemple avec stream_resolve_include_path()
Exemple simple d'utilisation.
<?php
var_dump(stream_resolve_include_path("test.php"));
?>
Résultat de l'exemple ci-dessus est similaire à :
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';
?>
```