Главная страница » Статьи и уроки » PHP статьи » PHP: права доступа к файлам. Установить их или получить значение.
Опрос
Какие статьи добавлять?
Выделенные и виртуальные серверы в Европе

PHP: права доступа к файлам. Установить их или получить значение.

Автор: administrator Дата: 29-04-2018, 19:11 Категория: Статьи и уроки / PHP статьи

Введение в права доступа

Операционные системы имеют различные политики контроля доступа к файлам. PHP не может влиять на них прямым образом. Однако интерпретатор обрабатывает системные сообщения. Например, при выполнении какой-либо операции с файлом, на которую у вас нет прав, встроенные функции перехватывают ошибки и возвращают false.
Для построения WEB-сервисов в основном используются операционные системы Linux и Windows. Их политики контроля доступа совершенно не совместимы. Тем не менее, список файловых операций остается неизменным: создание, чтение, изменение, удаление и запуск исполняемых программ. PHP имеет ряд встроенных функций, самостоятельно определяющих тип операционной системы и вычисляющих доступность прав.
Заметка!
В зависимости от логики приложения может возникнуть потребность проверки прав доступа к файлу до осуществления операции. Это позволит явным образом контролировать поведение программы, а не дожидаться ошибок.

Проверка файла на существование

Очень часто требуется подтвердить наличие определенного файла. От этого может зависеть дальнейшая логика приложения. Например, если пользователь не загрузил изображение профиля личной страницы, ему показывается сообщение с напоминанием.
Для проверки файла на существование нужно использовать функцию file_exsists(). Она принимает один параметр строкового типа, в котором указывается директория расположения и имя файла. В случае успешной проверки возвращается true, иначе false.
$filename = '/some-file-path/name.txt';

if (file_exists($filename)) {
    echo "Файл {$filename} успешно найден";

} else {
    echo "Не удалось найти файл {$filename}";
}
Также PHP имеет встроенную функцию для уточнения того, что по указанному пути расположен именно файл. Эта потребность возникает в операционной системе Linux, где директории также являются файлами, но особого типа. Функция is_file() по принципу использования аналогична file_exists().



Получение общих прав доступа

Проверка прав доступа на выполнение стандартных операций чтения, записи или запуска программ осуществляется с помощью функций is_readable()is_writable() и is_executable(). Из имен функций понятна суть проверок. Все они принимают один параметр — место расположения файла. При наличии прав доступа будет возвращено логическое значение true, в противном случае false.
$filename = '/some-file-path/name.txt';

if (is_readable($filename)) {
    echo "Файл существует и доступен для чтения";

} else {
    echo "Отсутствуют права на чтение из файла";
}

Установка прав доступа файла

Иногда, необходимо установить новые права доступа для конкретного файла. PHP позволяет сделать это с помощью функции chmod(). В первом параметре ей передается место расположения файла, а во втором - трехзначное число в восьмеричной системе счисления. Число соответствует определениями прав доступа UNIX-подобных систем для владельца файла, группы и остальных пользователей.
$filename = '/directory/content.txt';

if (chmod($filename, 0740)) {
    echo "Права доступа для {$filename} изменены";

} else {
    echo "Не удалось установить права для {$filename}";
};
Пример, приведенный выше, задает права для файла content.txt. Обратите внимание, что в самом начале второго параметра стоит ноль. Это сообщает интерпретатору о восьмеричной системе счисления. Первое число «7» говорит о том, что создатель файла будет иметь неограниченные права. Второе число «4» определяет для привязанной к файлу группы пользователей права «только чтение». Третье число «0» запрещает всем остальным пользователям любой вид доступа.
Число, задающее права доступа, формируется как сумма различных флагов где: 0 — это отсутствие прав, 1 — разрешение на запуск программы, 2 — запись в файл, 4 — чтение из файла. Например, если вы хотите дать создателю файла только права на чтение и запись, нужно указать число «6» (2 + 4).
Важно!
Функция с chmod() на практике используется редко. Она совершенно не функционирует в Windows, так как политика контроля доступа в этой операционной системе запутана и не имеет простого способа изменения прав файлов. В Linux её возможности ограничиваются тем, что изменение прав должно происходить от лица администратора. PHP, как правило, запускается под отдельным пользователем с ограниченными возможностями.
  • Не нравится
  • 0
  • Нравится
Просмотров: 1 262 Напечатать Жалоба
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Написать комментарий
Ваше Имя:
Ваш E-Mail:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Код: Кликните на изображение чтобы обновить код, если он неразборчив
Введите код: