Права доступа к файлам — важная концепция в Unix-подобных системах, на которых основано большинство веб-хостингов. Понимание этих прав необходимо при работе с PHP на сервере.
Таблица прав доступа
Пользователь | Чтение (4) | Запись (2) | Выполнение (1) | Сумма |
---|---|---|---|---|
Владелец | ✓ | ✓ | ✓ | 7 |
Группа | ✓ | ✗ | ✗ | 4 |
Другие | ✓ | ✗ | ✗ | 4 |
Таблица показывает права для владельца файла, группы и остальных пользователей. Каждая операция (чтение, запись, выполнение) имеет числовое значение (4, 2 и 1 соответственно). Сумма значений определяет итоговое право доступа. Например, владелец имеет полный доступ (7), группа и другие пользователи — только чтение (4).
Расчет прав доступа
Права доступа представляются числом, полученным суммированием числовых значений разрешенных операций.
- Владелец (7): 4 (чтение) + 2 (запись) + 1 (выполнение) = 7
- Группа (4): 4 (чтение) + 0 (запись) + 0 (выполнение) = 4
- Другие (4): 4 (чтение) + 0 (запись) + 0 (выполнение) = 4
Код 755 означает:
- Владелец: полный доступ (7)
- Группа: чтение и выполнение (4 + 1 = 5)
- Другие: чтение и выполнение (4 + 1 = 5)
Код 777 предоставляет полный доступ (чтение, запись и выполнение) всем.
Работа с правами доступа в PHP
Для работы с правами доступа используются функции:
- file_exists() — проверка существования файла. Например, file_exists(‘/путь/к/файлу.php’) вернет true, если файл существует.
- chmod() — изменение прав доступа. Синтаксис: chmod($файл, $мода), где $файл — путь к файлу, а $мода — числовое значение прав доступа (октальное число, например, 0777 для полного доступа).
Пример изменения прав доступа на 777 для файла index.php:
chmod('index.php', 0777);
Изменение прав доступа часто не требуется, но может понадобиться при установке скриптов или работе с внешними системами.
Функция fileperms()
Функция fileperms() возвращает числовое значение текущих прав доступа к файлу. Пример:
$права = fileperms('index.php');
echo $права;
На Windows и macOS функция fileperms() может возвращать некорректные значения, так как эти операционные системы не используют систему прав доступа Unix.
Понимание прав доступа в Unix-системах важно для работы с PHP на сервере. Функции chmod() и fileperms() позволяют изменять и получать информацию о правах доступа к файлам. Хотя на практике вы будете использовать эти функции нечасто, знание их принципа работы необходимо.