Есть ли способ проверить, существуют ли файлы (с абсолютным или относительным путем)? Я использую PHP. Я нашел пару методов, но либо они принимают только абсолютные или относительные, но не оба. Благодарю.
file_exists($file);
делает трюк как для относительных, так и для абсолютных путей.
Что более полезно, тем не менее, имеет абсолютные пути без жесткого кодирования. Лучший способ сделать это – использовать dirname(__FILE__)
который получает полный путь каталога к текущему файлу в формате ether unix формата Windows. Затем мы используем realpath()
который удобно возвращает false, если файл не существует. Все, что вам нужно сделать, это указать относительный путь из каталога этого файла и собрать все вместе:
$path = dirname(__FILE__) . '/include.php'; if (realpath($path)) { include($path); }
в$path = dirname(__FILE__) . '/include.php'; if (realpath($path)) { include($path); }
Вы можете использовать realpath
для проверки наличия файла в указанном пути и получения расширенного пути к этому файлу:
$absPath = realpath($path); if ($absPath === false) { // invalid path }
file_exists($path)
будет проверять абсолютный путь или относительно места расположения скрипта. Если вы хотите проверить относительно корня документа, вы можете попробовать file_exists("{$_SERVER['DOCUMENT_ROOT']}path");
Если вам нужна функция, которая будет принимать как относительные, так и абсолютные пути, что-то вроде этого должно работать (непроверено):
function check_file($path) { return ( file_exists($path) || file_exists("{$_SERVER['DOCUMENT_ROOT']}path") ); }