Php относительный путь или

Функция определения относительного и абсолютного пути к файлу на PHP

Довольно часто возникает необходимость подтянуть в текущий файл инклюдом какой-либо файл из другой папки или прочитать файл конфигурации, да и просто узнать полный путь к папке с искомым файлом. В жёсткой иерархии сайта можно прописать необходимые смещения относительного пути типа: «../../Dir1/Dir2/file.php». Но что делать если искомый файл подтягивается из разных директорий. К тому же на хостингах по-разному осуществляется организация корневой папки сайта. В нормальном виде корневая папка носит названия домена сайта, но очень часто бывает, что файлы сайта располагаются в подпапке «public_html», которая в URL пути не присутствует или домен привязан к папке с именем аккаунта на хостинге и отследить смещение относительно доменного имени не получится. Как следствие, при переносе сайта межу хостинг провайдерами пути приходится корректировать вручную. Чтобы обойти эти неприятности нам поможет небольшая функция написанная на PHP.

function FileDir($index = "index.html") < $dirFile = __FILE__; $abs = ''; $infodir[]=""; $ns = substr_count($dirFile, '/'); while ($ns >1)< $dirFile = trim(dirname($dirFile) . PHP_EOL); $filename = $dirFile."/".$index; if (file_exists($filename))< $infodir['fulldir']=$dirFile; $infodir['fullpath']=$dirFile."/".$index; $infodir['relativepath']=$abs.$index; return $infodir; >else < $infodir['fulldir']=$dirFile; $infodir['fullpath']=0; $infodir['relativepath']= 0; >$abs .= '../'; $ns--; > return $infodir; >

Разберём работу функции FileDir. Инициализируем передаваемую в функцию переменную $index значением имени индексного файла, например «index.html». Такой файл обычно является индексным и располагается в корневой директории сайта. Возможно, у Вас индексный файл «index.php», проверьте.

Читайте также:  Время изменения html страницы

Внутри функции определим переменные.

$dirFile = __FILE__; — путь к текущему файлу от корня диска.

$abs = »; — Переменная относительного пути

$infodir[] = «»; — Объявляем массив выводимых функцией значений.

$ns = substr_count($dirFile, ‘/’); Узнаём количество вхождений слеша «/» для ограничения итераций цикла.

Запускаем цикл while ($ns > 1) и начинаем перемещаться от конечной директории к корневой директории диска. В этом нам поможет функция dirname() . Для отсечения крайних пробелов обернём её в trim() .

$filename = $dirFile.»/».$index; — Формируем проверочный путь к искомому файлу и проверям на существование файла в текущей для этой итерации цикла директории.

if (file_exists($filename))< $infodir['fulldir']=$dirFile; $infodir['fullpath']=$dirFile."/".$index; $infodir['relativepath']=$abs.$index; return $infodir; >else

$infodir[‘fulldir’]=$dirFile; //Абсолютный путь к директории с искомым файлам

$infodir[‘fullpath’]=$dirFile.»/».$index; // Абсолютный путь к искомому файлу от коря диска

$infodir[‘ relativepath ‘]=$abs.$index; //Относительный путь к файлу относительно исполняемого файла.

Если искомый файл лежит в текущей для итерации директории то то работа функции прекращается и отдаются данные массива $infodir. Если файл не найден то значения абсолютного и относительного пути к искомому файлу будут равны нулю, а полный путь к дирректории иметь значение имени корневой папки диска.

Для примера возмём ситуацию когда нам нужно подключиться к базе MySql, а данные записаны в файле config.ini который находится в папке «config» в корневой директории сайта.

Преобразуем нашу функцию в класс для более удобного применения.

 1)< $dirFile = trim(dirname($dirFile) . PHP_EOL); $filename = $dirFile."/".$index; if (file_exists($filename))< $infodir['fulldir']=$dirFile; $infodir['fullpath']=$dirFile."/".$index; $infodir['relativepath']=$abs.$index; return $infodir; >else < $infodir['fulldir']=$dirFile; $infodir['fullpath']=0; $infodir['relativepath']= 0; >$abs .= '../'; $ns--; > return $infodir; > public function connect()< $dirhome=self::FileDir('config/configBD.ini'); $inimass = parse_ini_file($dirhome['absolute'], true); $link = new MySQLi($inimass['connect']['host'], $inimass['connect']['user'], $inimass['connect']['pass'], $inimass['connect']['baza']); if ($link->connect_error) < die('

'.$link->connect_errno.' - '.$link->connect_error.'

'); >elseВы подключились к MySQL!"; > $link->query("SET NAMES 'utf8'"); return $link; > > > $lk = new Baza; $file = 'config/configBD.ini'; $infodir = $lk ->FileDir($file); echo "
Абсолютный путь к директории с файлом: " .$infodir['fulldir']; echo "
Полный путь к файлу: " .$infodir['fullpath']; echo "
Относительный путь к файлу: " .$infodir['relativepath']; if($lk -> connect())YES";>elseNO";> ?>

Обратимся к файлу из браузера на исполнение и при успешном выполнении получим:

Абсолютный путь к директории с файлом: /home/users/d/dmitriatika/domains/my-skills.ru

Относительный путь к файлу: ../../config/configBD.ini

Полный путь к файлу: /home/users/d/dmitriatika/domains/my-skills.ru/config/configBD.ini

Соединение с базой данных установлено

В коде функция connect() сначала вызывает функцию FileDir() для получения пути к файлу конфигурации. Затем парсим файл функцией parse_ini_file и получаем данные для соединения с базой. Следом происходит соединение с базой. Функция возвращает идентификатор соединения.

На заметку! Не забывайте защищать свои конфиурационные файлы. Один из верных способов — поместить ini файлы конфигурации в отдельную папку и добавить в неё же файл » .htaccess » с записью: » deny from all «.

Осталось добавить, что в функцию FileDir можно передовать путь к искомому файлу от корневой папки сайта. А если нужен абсолютный путь к корневой дирректории сайта, то передайте в переменную имя любого файла лежащего в корне сайта.

Как получить относительный и абсолютный путь к файлу из URL.

По просьбе трудящихся немного дополню функцию, чтобы была возможность передовать в неё не только путь от корня до файла, но и URL сайта.

function FileDir($index = "index.html") < //Парсим URL, путь от корня и обрезаем первый слеш $index = ltrim(parse_url($index, PHP_URL_PATH), '/'); $dirFile = __FILE__; $abs = ''; $infodir[]=""; $ns = substr_count($dirFile, '/'); while ($ns >1)< $dirFile = trim(dirname($dirFile) . PHP_EOL); $filename = $dirFile."/".$index; if (file_exists($filename))< $infodir['fulldir']=$dirFile; $infodir['fullpath']=$dirFile."/".$index; $infodir['relativepath']=$abs.$index; $infodir['pathbias']= $abs; return $infodir; >else < $infodir['fulldir']=$dirFile; $infodir['fullpath']=0; $infodir['relativepath']= 0; $infodir['pathbias']= 0;//Путь смещения >$abs .= '../'; $ns--; > return $infodir; >

На выходе добавил в массиве путь смещения по уровням «../../../» — иногда требуется чтобы подключать не один а несколько файлов в дирректорию исполнительного скрипта из смежных каталогов.

Дата публикации: 2023-02-15

Источник

Подключение файлов

Способность вызывать сценарий из отдельного файла по его имени называется в PHP подключением файлов. Подключают PHP-сценарии, любые текстовые файлы или HTML-страницы.

Зачем разделять и подключать PHP-сценарии

PHP-разработчики дробят исходный код проекта на отдельные сценарии, чтобы было проще работать. Если написать код в одном файле, сценарий станет необъятным, и ориентироваться будет невозможно.

Если вынести повторяющиеся блоки кода в отдельные сценарии, то появится возможность повторно использовать один код в разных файлах и подключать его только по требованию.

Например, пользовательские функции удобно объявлять в отдельном сценарии, а затем подключать там, где эти функции понадобились.

Способы подключения файлов — require и require_once

Для подключения файлов в PHP есть две языковые конструкции: require и require_once . Отличия между ними минимальны. Оба этих ключевых слова подключают файл с указанным именем и вызывают ошибку, если данный файл не существует.

👉 Особенность работы require_once — он позволяет подключать файл только один раз, даже если вызывать инструкцию несколько раз с одним именем файла.

Примеры подключения файлов

Рассмотрим, как подключить один сценарий внутри другого. Для этого воспользуемся инструкцией require . Предположим, у нас есть два сценария: index.php и sub.php .

В файле index.php находится код, который подключит сценарий sub.php :

Интересный факт: require можно использовать как ключевое слово, либо как функцию.

Результат будет одним и тем же:

Результат работы:

Привет, я содержимое из sub.php! А я - index.php! 

Что произошло? Два сценария как бы склеились в один: выполнилось все содержимое sub.php и добавилось в начало сценария index.php .

О работе с функцией require подробно рассказано в этом задании.

Абсолютные и относительные пути

При подключении файла в качестве его адреса указывают абсолютный или относительный путь.

Абсолютный путь — это полный адрес файла от корня диска. Например, /var/www/web/site/inc/sub.php

Относительный путь содержит адрес относительно текущей рабочей директории. Если сценарий лежит в папке /var/www/web/site , то для подключения файла используется такой путь: inc/sub.php

Рекомендуется всегда указывать относительные пути, чтобы сайт продолжал работать, если его переместят в другую папку.

👉 В PHP есть полезные встроенные константы, их используют в пути к подключаемым файлам.

__DIR__ — полный путь к директории с текущим сценарием.

__FILE__ — полный путь к текущему сценарию.

Видимость переменных в подключаемых сценариях

При подключении файлы склеиваются в один, поэтому и все переменные в разных сценариях тоже получают общую область видимости.

В PHP нет системы модулей, как в других языках программирования (Python, Java, ECMAScript 12). Невозможно «импортировать» отдельные переменные или функции из подключаемого сценария.

Если подключить один сценарий дважды, то переменные и функции из него тоже объявятся повторно, а это вызовет ошибку. Чтобы такого не произошло, используйте require_once .

«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

Источник

PHP: Как указать путь к файлу

Абсолютный путь — это полный путь к файлу или каталогу в системе. В PHP абсолютный путь можно указать следующим образом:

Относительный путь

Относительный путь определяет местоположение файла или каталога относительно текущего рабочего каталога. В PHP относительный путь можно указать следующим образом:

Путь к файлу с использованием переменной __DIR__

В PHP есть магическая константа __DIR__ , которая содержит путь к каталогу скрипта. Использование этой константы обеспечивает большую гибкость при указании пути к файлу:

Путь к файлу с использованием функции dirname(__FILE__)

Функция dirname() в PHP возвращает путь к каталогу родительского файла. Комбинирование этой функции с магической константой __FILE__ позволяет указывать путь к файлу следующим образом:

$file = dirname(__FILE__) . '/file.txt'; 

php как указать путь к файлу

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

Комментарии

Отправить комментарий

Популярные сообщения

Python вывести количество элементов списка

Python: Вывод количества элементов списка В этой статье мы рассмотрим как выводить количество элементов списка с помощью языка программирования Python. Использование функции len() Для определения количества элементов в списке в Python, используйте встроенную функцию len() . my_list = [1, 2, 3, 4, 5] elements_count = len(my_list) print(«Количество элементов в списке:», elements_count) Этот код создает список my_list , а затем использует функцию len() для подсчета элементов в списке. Результат будет выведен на экран. Использование цикла for Если вы хотите подсчитать количество элементов списка без использования функции len() , вы можете использовать цикл for . my_list = [1, 2, 3, 4, 5] elements_count = 0 for _ in my_list: elements_count += 1 print(«Количество элементов в списке:», elements_count) В этом примере мы инициализируем переменную elements_count значением 0, а затем для каждого элемента в списке увел

Как сделать шашки на python

Как сделать шашки на Python Как сделать шашки на Python В этой статье мы рассмотрим, как создать простую игру в шашки на Python с использованием библиотеки Pygame. Подготовка Для начала установите библиотеку Pygame, используя следующую команду: pip install pygame Создание доски import pygame pygame.init() WIDTH, HEIGHT = 800, 800 ROWS, COLS = 8, 8 SQUARE_SIZE = WIDTH // COLS WHITE = (255, 255, 255) BLACK = (0, 0, 0) RED = (255, 0, 0) BLUE = (0, 0, 255) def draw_board(win): win.fill(WHITE) for row in range(ROWS): for col in range(row % 2, COLS, 2): pygame.draw.rect(win, BLACK, (row * SQUARE_SIZE, col * SQUARE_SIZE, SQUARE_SIZE, SQUARE_SIZE)) def main(): win = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption(«Checkers») clock = pygame.time.Clock() run = True while run: clock.tick(60) for event in pygame.event.get(): if event.ty

Python как перевести число в другую систему счисления

Преобразуйте числа как профессионал! Узнайте, как Python может перевести любое число в любую систему счисления. Даже если вы никогда раньше не сталкивались с программированием, эта статья поможет вам стать экспертом в считывании двоичных, восьмеричных и шестнадцатеричных чисел. Не пропустите возможность раскрыть секреты произвольной системы счисления в Python! Python: Перевод числа в другую систему счисления В языке программирования Python преобразование числа в другую систему счисления может быть выполнено с использованием встроенных функций и методов. Преобразование чисел в двоичную систему Python предоставляет встроенную функцию bin() для преобразования числа в двоичную систему. # Пример преобразования числа в двоичную систему num = 18 binary_num = bin(num) print(binary_num) # Вывод: 0b10010 Преобразование чисел в восьмеричную систему Функция oct() в Python преобразует число в восьмеричную систему. # Пример преобразования числа в восьмеричную систему num = 18

Источник

Оцените статью