الدالة fileperms()‎ في PHP

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث

(PHP 4, PHP 5, PHP 7)

تعيد الدالة fileperms()‎ الأذونات الحاليَّة لملف محدَّد.

الوصف

int fileperms ( string $filename )

تعيد هذه الدالة الأذونات التي تخصُّ الملف filename.

المعاملات

filename

مسار الملف الذي ستُجرى عليه العمليَّة.

القيم المعادة

تُعاد أذونات الملف filename في الصيغة العدديَّة. الأرقام المُعادة التي تمثِّل الأذونات هي نفسها التي تحاول الدالة chmod()‎ تغييرها (راجع شرح المعامل mode في تلك الدالة)، وتتضمَّن أحيانًا القيمة المُعادة في بعض المنصات معلوماتٍ عن نوع الملف filename أيضًا. يوضِّح المثال 2 كيفيَّة فحص القيمة المعادة من أجل أذونات وأنواع محدِّدة للملف على أنظمة POSIX، والتي تتضمَّن نظام لينكس ونظام Mac OS X.

القيمة المُعادة للملفات المحليَّة تُمثَّل بالعنصر st_mode الذي يُعدُّ جزءًا من البنية المُعادة باستعمال الدالة stat()‎ في لغة C. يختلف بالتأكيد ترتيب البتات من منصَّة إلى منصَّة أخرى، لذا يُنصح البحث عن التوثيق الذي يشرح ذلك في المنصَّة المستعملة والاطلاع عليه في حال طُلب تحليل البتات المُعادة التي لا تتعلََّق بالأذونات (مثل البتات التي تحدِّد نوع الملف).

أمثلة

المثال 1: اظهار الأذونات التي تعيدها الدالة fileperms()‎ بالنظام الثماني

<?php
echo substr(sprintf('%o', fileperms('/tmp')), -4);
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
?>

سيُظهر المثال السابق النتيجة التالية:

1777
0644

المثال 2: عرض الأذونات الكاملة

<?php
$perms = fileperms('/etc/passwd');

switch ($perms & 0xF000) {
    case 0xC000: // مقبس
        $info = 's';
        break;
    case 0xA000: // وصلة رمزية
        $info = 'l';
        break;
    case 0x8000: // ملف عادي
        $info = '-';
        break;
    case 0x6000: // ملف طرفي كتلي
        $info = 'b';
        break;
    case 0x4000: // مجلَّد
        $info = 'd';
        break;
    case 0x2000: // ملف طرفي محرفي
        $info = 'c';
        break;
    case 0x1000: // أنبوبة مسماة
        $info = 'p';
        break;
    default: // ملف غير معروف
        $info = 'u';
}

//أذونات المستخدم المالك
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
            (($perms & 0x0800) ? 's' : 'x' ) :
            (($perms & 0x0800) ? 'S' : '-'));

//أذونات المجموعة المالكة
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
            (($perms & 0x0400) ? 's' : 'x' ) :
            (($perms & 0x0400) ? 'S' : '-'));

//أذونات بقية المستخدمين
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
            (($perms & 0x0200) ? 't' : 'x' ) :
            (($perms & 0x0200) ? 'T' : '-'));

echo $info;
?>

سيُظهر المثال السابق النتيجة التالية:

-rw-r--r--

الأخطاء والاستثناءات

سيُصدَر تحذير E_WARNING عند فشل الدالة.

ملاحظات

ستُخزَّن نتيجة هذه الدالة. راجع صفحة الدالة clearstatcache()‎ للمزيد من التفاصيل.

فائدة: يمكن أن تُستعمل هذه الدالة بدءًا من إصدار PHP 5.0.0 مع بعض بروتوكلات الروابط (URL wrappers).

انظر أيضًا

  • الدالة chmod()‎: تغيير أذونات الملف.
  • الدالة is_readalbe()‎: التأكد من أن الملف موجود وقابل للقراءة.
  • الدالة stat()‎: تعيد معلومات عن ملف.

مصادر