Проверьте, существуют ли файлы с абсолютным и относительным путем - PullRequest
9 голосов
/ 13 ноября 2009

Есть ли способ проверить, существуют ли файлы (с абсолютным или относительным путем)? Я использую PHP. Я нашел пару методов, но либо они принимают только абсолютные или относительные, но не оба. Спасибо.

Ответы [ 3 ]

25 голосов
/ 13 ноября 2009

file_exists($file); выполняет как относительные, так и абсолютные пути.

Что более полезно, тем не менее, иметь абсолютные пути без жесткого кодирования. Лучший способ сделать это - использовать dirname(__FILE__), который получает полный путь к каталогу текущего файла в эфирном формате UNIX или Windows. Тогда мы можем использовать realpath(), который удобно возвращает false, если файл не существует. Все, что вам нужно сделать, это указать относительный путь из каталога этого файла и соединить все вместе:

$path = dirname(__FILE__) . '/include.php';
if (realpath($path)) {
    include($path);
}
4 голосов
/ 13 ноября 2009

Вы можете использовать realpath, чтобы проверить, существует ли файл по указанному пути и получить расширенный путь к этому файлу:

$absPath = realpath($path);
if ($absPath === false) {
    // invalid path
}
4 голосов
/ 13 ноября 2009

file_exists($path) проверит абсолютный путь или относительно местоположения скрипта. Если вы хотите проверить относительно корня документа, вы можете попробовать file_exists("{$_SERVER['DOCUMENT_ROOT']}path");

Если вам нужна функция, которая будет принимать как относительные, так и абсолютные пути, что-то вроде этого должно работать (не проверено):

function check_file($path) {
    return ( file_exists($path) || file_exists("{$_SERVER['DOCUMENT_ROOT']}path") );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...