PHP: Может включать файл, который file_exists () говорит, не существует

В моем сценарии я устанавливаю путь include (так что другая часть приложения также может включать файлы), проверьте, существует ли файл и включайте его.

Однако после того, как я установил путь include, file_exists() сообщает, что файл не существует, но я все же могу включить тот же файл.

 <?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, array( $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! 

Я могу редактировать путь включения и включать файлы, не предоставляя абсолютный путь к файлу, но я не могу проверить, существуют они или нет. Это действительно раздражает, так как каждый раз, когда вызывается файл, который не существует, мое приложение приводит к фатальной ошибке или, в лучшем случае, предупреждению (с использованием include_once() ).

Ошибочные ошибки и предупреждения отключены, к сожалению.

Может ли кто-нибудь объяснить, что вызывает такое поведение?

file_exists ничего не говорит о том, существует ли файл (и скрипту разрешено его знать), разрешая путь относительно cwd. Он не заботится об включенном пути.

Да Вот простой способ реализовать это

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