Перейти к содержимому

umask()

Введение

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

Понимание функции umask()

Функция umask() устанавливает маску режима файла, которая определяет разрешения по умолчанию для вновь создаваемых файлов и каталогов. Она принимает необязательный параметр, представляющий новую маску. Если вызывается без аргументов, она возвращает текущую маску, не изменяя её. При указании маски PHP применяет её к разрешениям по умолчанию системы (обычно 0666 для файлов и 0777 для каталогов) с помощью побитовой операции AND с инвертированной маской (default & ~mask). Обратите внимание, что umask() возвращает значение предыдущей маски и влияет на весь процесс PHP, а не только на выполнение текущего скрипта.

Синтаксис функции umask()

Синтаксис функции umask() выглядит следующим образом:

php
umask($mask);

Здесь $mask — это новая маска. Она должна быть указана в восьмеричной системе счисления (например, 022).

Примеры использования umask()

Рассмотрим пример того, как функция umask() может использоваться в PHP.

Пример 1: Установка разрешений по умолчанию для новых файлов

php
<?php

umask(022);
$file_handle = fopen('example.txt', 'w');
fclose($file_handle);
echo 'File permissions: ' . decoct(fileperms('example.txt') & 0777);
unlink('example.txt');

В этом примере с помощью функции umask() устанавливаются разрешения по умолчанию для новых файлов на уровне 022, после чего создаётся новый файл example.txt с разрешениями по умолчанию 644. Добавленный вызов fileperms() проверяет итоговые восьмеричные разрешения. Обратите внимание, что umask() также применяется к вновь создаваемым каталогам.

Заключение

Функция umask() предоставляет простой способ управления разрешениями по умолчанию для файлов и каталогов в ваших PHP-скриптах. Мы надеемся, что эта статья помогла вам лучше понять, как работает umask() и как её можно использовать в собственных проектах.

Практика

Что делает функция umask() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.