PHP में umask() फ़ंक्शन वर्तमान प्रक्रिया के लिए फ़ाइल निर्माण मोड मास्क (file creation mode mask) सेट या प्राप्त करता है। यह नई फ़ाइलों/निर्देशिकाओं के डिफ़ॉल्ट अनुमतियों (permissions) को प्रभावित करता है।
सिंटैक्स (Syntax)
umask(int $mask = null): int
पैरामीटर्स (Parameters)
$mask (वैकल्पिक) − नया umask मान (अष्टाधारी/octal में, जैसे 0022, 0077)। यदि छोड़ा गया तो वर्तमान umask लौटाता है बिना बदले।
रिटर्न वैल्यू (Return Value)
पहले का umask मान लौटाता है (अष्टाधारी पूर्णांक के रूप में)।
उदाहरण (Examples)
उदाहरण 1: umask सेट करना और प्राप्त करना
<?php
// वर्तमान umask पढ़ें
$old = umask();
echo "Old umask: " . sprintf("%04o", $old) . "\n";
// नया umask सेट करें (0077 = केवल मालिक पढ़/लिख सके)
$old = umask(0077);
echo "Previous umask: " . sprintf("%04o", $old) . "\n";
// फ़ाइल बनाएं - अनुमति 0644 & ~0077 = 0600
touch("secure.txt");
echo "File created with restricted permissions\n";
// umask बहाल करें
umask($old);
?>
उदाहरण 2: chmod के साथ उपयोग
<?php
// umask 0022 (डिफ़ॉल्ट कई सिस्टम पर): फ़ाइल 0644, निर्देशिका 0755
umask(0022);
mkdir("public_dir"); // 0777 & ~0022 = 0755
touch("public.txt"); // 0666 & ~0022 = 0644
// umask 0000: कोई प्रतिबंध नहीं
umask(0000);
mkdir("open_dir"); // 0777
touch("open.txt"); // 0666
?>
umask कैसे काम करता है
अंतिम अनुमति = requested_mode & ~umask (बिटवाइज AND NOT)
| अनुरोधित | umask | परिणाम |
|---|---|---|
| 0666 (फ़ाइल) | 0022 | 0644 (rw-r--r--) |
| 0777 (निर्देशिका) | 0022 | 0755 (rwxr-xr-x) |
| 0666 | 0077 | 0600 (rw-------) |
| 0777 | 0077 | 0700 (rwx------) |
सावधानियाँ
umask()प्रक्रिया-स्तरीय है - पूरे PHP प्रोसेस (सभी थ्रेड/अनुरोध) को प्रभावित करता है।- साझा होस्टिंग/वेब सर्वर में umask बदलना अन्य स्क्रिप्ट्स को प्रभावित कर सकता है।
- विशिष्ट फ़ाइल के लिए
chmod()उपयोग करना बेहतर है। - Windows पर umask का प्रभाव सीमित/अनुपस्थित हो सकता है।