PHP: può includere un file che file_exists () dice che non esiste

Nel mio script, ho impostato il path di inclusione (in modo che un'altra parte dell'applicazione possa includere anche i file), verificare che esista un file e includerlo.

Tuttavia, dopo aver impostato il path di inclusione, file_exists() segnala che il file non esiste, eppure posso ancora includere lo stesso file.

 <?php $include_path = realpath('path/to/some/directory'); if(!is_string($include_path) || !is_dir($include_path)) { return false; } set_include_path( implode(PATH_SEPARATOR, arrays( $include_path, get_include_path() )) ); // Bootstrap file is located at: "path/to/some/directory/bootstrap.php". $bootstrap = 'bootstrap.php'; // Returns "bool(true)". var_dump(file_exists($include_path . '/' . $bootstrap)); // Returns "bool(false)". var_dump(file_exists($bootstrap)); // This led me to believe that the include path was not being set properly. // But it is. The next thing is what puzzles me. require_once $bootstrap; // Not only are there no errors, but the file is included successfully! 

Posso modificare il path di inclusione e includere i file senza fornire il path file assoluto, ma non riesco a verificare se esistono o less. Questo è davvero fastidioso perché each volta che viene chiamato un file che non esiste, la mia applicazione si traduce in un errore fatale o, nel migliore dei casi, in un avvertimento (usando include_once() ).

Distriggersre errori e avvisi non è un'opzione, sfortunatamente.

Qualcuno può spiegare che cosa sta causando questo comportmento?

file_exists non fa altro che dire se esiste un file (e allo script è permesso di sapere che esiste), risolvendo il path relativo al cwd. Non interessa il path di inclusione.

Sì Ecco il modo più semplice per implementarlo

 $file_name = //Pass File name if ( file_exists($file_name) ) { echo "Exist"; } else { echo "Not Exist"; }