В моем сценарии я устанавливаю путь include (так что другая часть приложения может также включать файлы), проверьте, существует ли файл и включайте его.PHP: Может содержать файл, который file_exists() говорит, что не существует
Однако после того, как я установил путь включения, 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!
я могу редактировать включать путь и включают в себя файлы без обеспечения абсолютного FilePath, но я не могу проверить, существуют ли они или нет. Это действительно раздражает, так как каждый раз, когда вызывается файл, который не существует, мое приложение приводит к фатальной ошибке или, в лучшем случае, предупреждению (с использованием include_once()
).
Ошибки поворота и предупреждения выключены, к сожалению, не является вариантом.
Может ли кто-нибудь объяснить, что вызывает подобное поведение?
Спасибо за это, я думал, что это скорее всего так, но не смог найти ни одного упоминания о нем в руководстве PHP. Спасибо за разъяснения :) – zanbaldwin