¿Cómo incluir un archivo solo si el archivo existe en PHP?

2 minutos de lectura

avatar de usuario
Emanuil Rusev

necesito un include función / declaración que incluirá un archivo solo si existe. ¿Hay uno en PHP?

Usted podría sugerir usar @include pero hay un problema con ese enfoque: en caso de que exista el archivo que se incluirá, PHP no generará advertencias si el analizador encuentra algo incorrecto en el archivo incluido.

  • ¿Estás pidiendo algo diferente a lo que estas respuestas te están dando? Me cuesta creer que lo sepas @ y include() pero no file_exists().

    – Jake París

    5 de enero de 2011 a las 14:17

  • @JMC Creative, soy consciente de la file_exists() Acercarse. Debería haber mencionado eso.

    –Emanuil Rusev

    5 de enero de 2011 a las 14:31

  • Relacionado: stackoverflow.com/questions/792899/…

    –Jesse Nickles

    9 de julio a las 18:51

if(file_exists('file.php'))
    include 'file.php';

Eso debería hacer lo que quieras

  • O sin el condicional en una sola línea: file_exists($file) AND include $file;

    – ircmaxell

    5 de enero de 2011 a las 14:18

  • mejor usar is_fileque evitaría directorios, para un código más seguro.

    JP19

    5 de enero de 2011 a las 14:36


  • @hakre Creo que lo arreglé combinándolo con la respuesta de StephaneJAIS.

    – Riking

    04/10/2014 a las 20:39

  • @ircmaxell ¿puede proporcionar un enlace para eso?

    – xavip

    20 mayo 2016 a las 16:05

  • Esto no funcionará si el directorio de trabajo actual es diferente a la ruta de inclusión. file_exists es relativo al directorio de trabajo actual, pero include no comprueba necesariamente el directorio de trabajo actual.

    – muy bien

    06/03/2017 a las 22:58

avatar de usuario
oezi

Intenta usar file_exists()

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

Según la respuesta de @ Select0r, terminé usando

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

Esta solución funciona incluso si escribe este código en un archivo que se ha incluido a sí mismo desde un archivo en otro directorio.

  • Esto es engañoso. stream_resolve_include_path significa que busca en la RUTA el archivo (o más específicamente, en relación con cada elemento de la RUTA). Esto es no lo mismo que en relación con el archivo en el que se encuentra el include está escrito

    – Esteban R.

    31 de julio de 2019 a las 17:08

¿Qué hay de usar file_exists antes de include?

avatar de usuario
Stephane JAIS

Revisar la stream_resolve_include_path función.

avatar de usuario
válido

@include($file);

Usando at delante, ignora cualquier error que esa función pueda generar. No abuse de esto ya que ES MUCHO MÁS LENTO que verificar con if, pero es la alternativa de código más corta.

creo que tienes que usar file_existsporque si hubiera tal inclusión, se habría enumerado aquí: http://php.net/manual/en/function.include.php

¿Ha sido útil esta solución?