Для некоторых манипуляций с файлами в PHP необходимо использовать путь, который будет указывать на файл или папку в файловой системе сервера, а не URL, который можно найти в адресной строке браузера или в виде ссылки на изображение, например.
1. Магические константы PHP
Для начала вспомним о магических константах в PHP:
__FILE__
- полный путь и имя текущего файла с развёрнутыми симлинками. Если используется внутри подключаемого файла, то возвращается имя данного файла.__DIR__
- Директория файла. Если используется внутри подключаемого файла, то возвращается директория этого файла. Это эквивалентно вызовуdirname(__FILE__)
. Возвращаемое имя директории не оканчивается на слеш, за исключением корневой директории.
И указанный выше вариант dirname(__FILE__)
также можно указывать для получения директории, в которой находится файл со скриптом.
Например, для сайта, расположенного в директории D:\OSPanel\domains\test (для локального сервера OpenServer), мы хотим узнать путь к файлу в папке pages/about.php:
1 2 3 4 5 6 7 | <?php echo "<p>". __FILE__."</p>"; //D:\OSPanel\domains\test\pages\about.php echo "<p>".__DIR__."</p>"; //D:\OSPanel\domains\test\pages echo "<p>".dirname(__FILE__)."</p>"; //D:\OSPanel\domains\test\pages ?> |
2. Используем функцию realpath()
Если у нас есть некий относительный путь, например из данной папки к какому-либо файлу изображения, мы можем получить путь к этому файлу относительно файловой системы каталогов сервера с помощью php-функции realpath()
.
Например:
1 2 3 4 5 6 | <?php $folder_path = realpath("../images/boats.jpg"); echo "<p>Folder path: $folder_path</p>"; // D:\OSPanel\domains\test\images\boats.jpg ?> |
Теперь у нас есть полный путь к файлу.
3. Используем переменную $_SERVER['DOCUMENT_ROOT']
Переменная $_SERVER['DOCUMENT_ROOT']
согласно документации - это директория корня документов, в которой выполняется текущий скрипт, та, которая указана в конфигурационном файле сервера. Поэтому мы можем использовать эту переменную для формирования пути к файлу, если известно расположение файла относительно корневой директории сайта.
1 2 3 4 5 6 | <?php $root_path = $_SERVER['DOCUMENT_ROOT'] . "/images/boats.jpg"; echo "<p>DOCUMENT_ROOT path: $root_path</p>"; //вывод DOCUMENT_ROOT path: D:/OSPanel/domains/test/images/boats.jpg ?> |
Этот вариант хорош, когда путь к файлу не слишком сложен. Он, например, использован в коде для получения размытого изображения.
4. Используем функцию getcwd()
Функция getcwd()
возвращает текущий рабочий каталог скрипта в случае успешного выполнения или false
в случае ошибки. Вы можете использовать эту функцию для создания пути к файлу или каталогу относительно текущего рабочего каталога. Например:
1 2 3 4 5 6 7 | <?php $image_dir_path = getcwd() . "\images\boats.jpg"; echo "<p>$image_dir_path</p>"; //D:\OSPanel\domains\test\images\boats.jpg ?> |
Это даст вам путь к файлу или папке (каталогу) относительно текущего рабочего каталога.
Заключение
Здесь мы рассмотрели 4 способа доступа к путям файлов и папок в файловой системе сервера для того, чтобы иметь возможность выполнять какие-либо действия над файлами с помощью PHP-скриптов.