web-dev-qa-db-fra.com

Comment inclure uniquement si le fichier existe

J'ai besoin d'une fonction/instruction include qui n'inclura un fichier que s'il existe. Est-ce qu'il y en a un en PHP?

Vous pouvez suggérer d'utiliser @include, mais cette approche pose un problème: si le fichier à inclure existe, PHP ne générera pas d'avertissement si l'analyseur trouve un problème dans le fichier inclus.

36
Emanuil Rusev
if(file_exists('file.php'))
    include 'file.php';

Ça devrait faire ce que tu veux

79
Colum

Essayez d’utiliser file_exists()

if(file_exists($file)){
  include $file;
}
9
oezi

Basé sur la réponse de @ Select0r, j'ai fini par utiliser

if (file_exists(stream_resolve_include_path($file)))
    include($file);

Cette solution fonctionne même si vous écrivez ce code dans un fichier qui a été inclus à partir d'un fichier situé dans un autre répertoire.

5
Nickkk

Que diriez-vous d'utiliser file_exists avant la include?

3
Select0r

Découvrez la fonction stream_resolve_include_path .

3
Stephane JAIS

Je pense que vous devez utiliser file_exists, car s'il y avait eu une telle inclusion, elle aurait été répertoriée ici: http://php.net/manual/en/function.include.php

1
JP19

le @ supprime les messages d'erreur.

vous utilisez le cloud:

$file = 'script.php';
if(file_exists($file))
  include($file);
0
Floern
@include($file);

L'utilisation de at, ignore toutes les erreurs que cette fonction pourrait générer ... Ne pas en abuser car IT IS est beaucoup plus lent que de vérifier avec si, mais c'est l'alternative de code la plus courte.

0
valiD