Пути к файлам в PHP

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

Описание

Путь, видимый в адресной строке, лишь часть от настоящего расположения, которая известна серверу и используется в server-side скриптах (то есть, программах на PHP). По умолчанию он не отдаётся пользователям ресурса, но вы можете, если это по каким-то причинам потребуется, вывести путь посредством print либо echo.

Для получения абсолютного пути к корню (так называемому «перекрёстку», где находятся реальное и видимое расположения контента веб-сайта) следует обратиться к супермассиву _SERVER. В нём присутствует элемент DOCUMENT_ROOT, который содержит нужную в контексте этого материала информацию. Отобразить его можно так же, как и часть любого обычного массива.

Учтите, что использовать истинное, более длинное расположение следует только при взаимодействии посредством программ, выполняемых на сервере. Не стоит вводить такой путь для JS, предназначенных для работы в браузере;HTML, CSS. В таком случае он просто будет вести к несуществующему документу или директории, и вызов файла либо ссылка попросту не сработают.

Зато всегда требуется прописывать абсолютное расположение в PHP – например, если вы хотите использовать следующие функции:

  • fopen;
  • file_get_contents;
  • file_put_contents;
  • require;
  • include;
  • require_once;
  • include_once.

Список неполный, но, как видно, для работы с файлами в PHP учитывать эту особенность обязательно.

Распространённые ошибки

Использование на клиентской стороне

Этот момент упоминался выше – не указывайте абсолютный путь для кода, который должен выполняться на стороне посетителя веб-сайта. Например, нельзя указывать данное расположение в ссылках, изображениях, вызовах стилей посредством <link>, JS-скриптах. Нужное вам содержимое в таком случае попросту не загрузится.

Кроме того, не стоит вводить путь посредством указания расположения на жёстком диске. В таком случае содержимое будет видно, но, к сожалению, лишь при наличии этого файла на устройстве пользователя. Попробуйте сами — посетите свой сайт, на котором присутствует такая ошибка, с телефона, чтобы убедиться в необходимости загружать файлы на сервер или, как минимум, сторонние хранилища с HTTP-доступом.

Указание URL в вызовах

Не вызывайте скрипты, исполняемые на том же самом сервере, посредством ссылок в интернете. Это не только увеличит задержки в выполнении кода из-за необходимости отправки HTTP-запросов (напоминаем, что лимит по времени работы скрипта на большинстве хостингов составляет от 10 до 30 секунд), но и позволит получить лишь только результат работы программы, практически не давая с ней взаимодействовать. Также этот момент несовместим с защитой программ посредством .htaccess–тогда она будет работать, а HTTP-вызовы – нет.

Используйте абсолютное позиционирование в require(), include() и подобных функциях. Учтите, что единственная разница между ними – в недоступности или возможности продолжить работу после неудачного выполнения, поэтому в целях безопасности советуется использовать первый вариант.

Примеры

Правильный вызов файла

<?php

require($_SERVER[‘DOCUMENT_ROOT’].»/script/my-code.php»); // правильно
# require(«https://example.com/script/my-code.php»); // неправильно
# require(«/script/my-code.php»); // неправильно
# require(«C:/Users/Administrator/apache/htdocs/script/my-code.php»); // неправильно
Вывод данных о расположении
<?php

echo»Абсолютный путь: <b>».$_SERVER[‘DOCUMENT_ROOT’].»</b>.»;

Образовательный портал 3TY.RU
Adblock
detector