В прошлой статье я достаточно подробно рассказал о правах доступа к файлам . Разумеется, это только теория, которую необходимо знать, чтобы правильно использовать функции для работы с правами доступа к файлам через PHP . Эту тему разберём в данной статье.

Работа с правами доступа к файлам через PHP

В прошлой статье я достаточно подробно рассказал о правах доступа к файлам. Разумеется, это только теория, которую необходимо знать, чтобы правильно использовать функции для работы с правами доступа к файлам через PHP. Эту тему разберём в данной статье.

Я уже говорил, что у файла всегда есть владелец, и у каждого файла имеется информация о его владельце. Каждый пользователь имеет свой UID (уникальный идентификатор), и именно этот идентификатор хранится в каждом файле. Чтобы узнать его, используется функция fileowner():

<?php
  echo fileowner("myfile.txt");
?>

После этого будет получен UID владельца файла "myfile.txt". Чтобы сменить владельца файла, надо воспользоваться функцией chown():

<?php
  chown("myuser", "myfile.txt");
?>

В данном примере мы передали права владельца "myfile.txt" пользователю myuser. Также вместо имени пользователя можно указывать его UID.

Следующая пара PHP-функций - это filegroup() и chgrp(), которые работают аналогично функциям fileowner() и chown(), но отвечают за группу пользователей:

<?php
  echo filegroup("myfile.txt");
  chgrp("mygroup", "myfile.txt");
?>

И, наконец, последние, но самые важные функции для работы с правами доступа к файлам через PHP - это fileperms() и chmod():

<?php   echo fileperms("myfile.txt");
  chmod("myfile.txt", "0777");
?>

Как Вы уже догадались, функция fileperms() возвращает права доступа к файлу. А функция chmod() устанавливает новые права доступа к файлу. Также заметьте, что права задаются с обязательным указанием ведущего нуля!

Это самые основные и самые важные функции PHP для работы с правами доступа. Я бы даже сказал, что реально используются только последние две, поэтому с ними потренируйтесь в работе. И ещё раз напоминаю, что права доступа имеются только в Unix-системах, а в Windows их вообще нет, поэтому и данные функции там так же будут работать некорректно.