Dans PHP, nous utilisons souvent l'inclusion ou les nécessitons d'introduire des fichiers externes. Pour permettre à ces fonctions de trouver des fichiers dans plusieurs répertoires, PHP fournit un mécanisme de chemin d'inclusion. La fonction get_include_path () peut nous aider à obtenir le chemin d'inclusion actuel, et avec la fonction file_exists () , nous pouvons déterminer si un fichier existe dans ces chemins.
Cet article présentera comment utiliser get_include_path () et file_exists () pour déterminer si un fichier existe dans le chemin d'inclusion PHP et fournir un exemple de code réel.
La fonction get_include_path () de PHP renvoie une chaîne composée de chemins, séparés par plusieurs chemins par les délimiteurs définis par le système d'exploitation:
Dans les systèmes Unix / Linux , le séparateur de chemin est :
Dans Windows Systems, le séparateur de chemin est ;
Ces chemins sont les répertoires que le moteur PHP recherche des fichiers lors de l'exécution inclut ou nécessite .
Par exemple:
echo get_include_path();
La sortie peut être:
.:/usr/share/php:/usr/local/lib/php
Étant donné que File_Exists () ne peut pas rechercher automatiquement le chemin inclus (il vérifie uniquement si le chemin donné existe), nous devons démonter le chemin inclus nous-mêmes, combiner manuellement chaque répertoire avec le nom de fichier cible, puis utiliser File_exists () pour le vérifier un par un.
La fonction suivante File_exists_in_include_path ($ filename) implémente cette fonction:
function file_exists_in_include_path($filename) {
$paths = explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $path) {
$fullPath = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $filename;
if (file_exists($fullPath)) {
return $fullPath;
}
}
return false;
}
Vous pouvez l'utiliser comme ceci:
$filename = 'config/settings.php';
$result = file_exists_in_include_path($filename);
if ($result !== false) {
echo "Le fichier se trouve dans le chemin d'inclusion,Le chemin complet est: " . $result;
} else {
echo "Le fichier n'est pas dans le chemin d'inclusion。";
}
Supposons que vous soyez dans un grand projet, les fichiers de configuration peuvent être placés dans différents répertoires, et ces répertoires sont tous ajoutés pour inclure_path . Vous souhaitez vérifier si un fichier existe avant de l' inclure pour éviter les messages d'avertissement, et vous pouvez utiliser notre fonction ci-dessus pour le moment.
Par exemple:
$filename = 'lib/MyClass.php';
if ($path = file_exists_in_include_path($filename)) {
include $path;
} else {
error_log("document $filename N'existe pas dans le chemin d'inclusion");
}
Vous pouvez également utiliser set_include_path () pour ajouter dynamiquement des chemins dans votre script:
set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/gitbox.net/includes');
Obtenez tous les chemins inclus via get_include_path () , puis vérifiez si le fichier existe avec file_exists () , ce qui peut améliorer la flexibilité et la robustesse du programme. En particulier dans les projets impliquant plusieurs répertoires et structures de fichiers complexes, cette approche peut éviter efficacement des erreurs inutiles et fournir des informations de débogage plus claires.