متى تكون البيانات غير مقروئة للدالة is_readable بلغة php

Ahmed Barabbud • منذ 5 سنوات

السلام عليكم 

 

بلغة php نستخدم دالة is_readable للتحقق من مقروئية ملف معين 

حالياً اتدرب على لغة php واطور نظام اطار بسيط جداً يستخدم 

نمط mvc وبالشرح استخدمها بالشكل الاتي 

 

 public static function render($view, $args = [])
    {
        extract($args, EXTR_SKIP);

        $file = "../App/Views/$view";  // relative to Core directory

        if (is_readable($file)) {
            require $file;
        } else {
            throw new \Exception("$file not found");
        }
    }

 

الامر الذي اود التأكد منه هل سيفشل الشرط في حال عدم وجود الملف فقط ام هناك حالات اخرى ؟ 

 

شكراً 

كلمات دليلية: mvc php web

الإجابة الصحيحة

عمار الخوالدة • منذ 5 سنوات

الدالة ترجع true في حال كان الملف موجودا وقابلا للقراءة
و false في حال كان غير موجود، أو غير قابل للقراءة.

القابلية للقراءة متعلقة بصلاحيات الملف، فعلى سيرفر لينكس مثلا بامكاني انشاء ملف واعطاء صلاحيات القراءة للمستخدم الذي انشأه، أو لاحدى المجموعات Groups، وأمنع باقي المستخدمين على السيرفر من قراءة هذا الملف.
مثلا لو نفذت الأوامر الآتية على السيرفر:

touch file.txt
chmod 660 file.txt

الأمر الأول سيقوم بانشاء الملف، والامر الثاني سيحدد الصلاحيات، لنفترض انني سجلت الدخول الى السيرفر باسم المستخدم ammar والمجموعة programmers، بحسب ارقام الصلاحيات ( يمكنك التعرف على معنى الارقام من هنا ) فالرقم الاول 6 سيسمح للمستخدم ammar بقراءة الملف والكتابة عليه، والرقم 6 الثاني سيسمح بقراءة الملف والكتابة عليه للمجموعة programmers، اما الرقم الاخير فلن يسمح بالقراءة ولا الكتابة على الملف لمن لا ينتمي لهذه المجموعة.
فلو سجلت الدخول باستخدام user باسم ahmed، ولم يكن هذا المستخدم ينتمي للمجموعة programmers فسترجع is_readable القيمة false لان الملف موجود لكنه غير قابل للقراءة.

في حال انك قابلية القراءة لا تهمك، كأن تكون متأكدا مثلا ان جميع الملفات قابلة للقراءة يمكن استخدام الدالة file_exists() بدلا من is_readable.

بالنسبة لسيرفرات الويب كـ Nginx و Apache ففي الغالب لها مجموعة خاصة يمكنك اسناد الصلاحيات المناسبة لها وهي www-data.
فالملفات القابلة للقراءة لهذه المجموعة يمكن قراءتها من سيرفرات الويب ( لأن المستخدم بطبيعة الحال لن يسجل الدخول الى السيرفر ).

الإجابات (1)

عمار الخوالدة • منذ 5 سنوات
الإجابة الصحيحة
مميز

الدالة ترجع true في حال كان الملف موجودا وقابلا للقراءة
و false في حال كان غير موجود، أو غير قابل للقراءة.

القابلية للقراءة متعلقة بصلاحيات الملف، فعلى سيرفر لينكس مثلا بامكاني انشاء ملف واعطاء صلاحيات القراءة للمستخدم الذي انشأه، أو لاحدى المجموعات Groups، وأمنع باقي المستخدمين على السيرفر من قراءة هذا الملف.
مثلا لو نفذت الأوامر الآتية على السيرفر:

touch file.txt
chmod 660 file.txt

الأمر الأول سيقوم بانشاء الملف، والامر الثاني سيحدد الصلاحيات، لنفترض انني سجلت الدخول الى السيرفر باسم المستخدم ammar والمجموعة programmers، بحسب ارقام الصلاحيات ( يمكنك التعرف على معنى الارقام من هنا ) فالرقم الاول 6 سيسمح للمستخدم ammar بقراءة الملف والكتابة عليه، والرقم 6 الثاني سيسمح بقراءة الملف والكتابة عليه للمجموعة programmers، اما الرقم الاخير فلن يسمح بالقراءة ولا الكتابة على الملف لمن لا ينتمي لهذه المجموعة.
فلو سجلت الدخول باستخدام user باسم ahmed، ولم يكن هذا المستخدم ينتمي للمجموعة programmers فسترجع is_readable القيمة false لان الملف موجود لكنه غير قابل للقراءة.

في حال انك قابلية القراءة لا تهمك، كأن تكون متأكدا مثلا ان جميع الملفات قابلة للقراءة يمكن استخدام الدالة file_exists() بدلا من is_readable.

بالنسبة لسيرفرات الويب كـ Nginx و Apache ففي الغالب لها مجموعة خاصة يمكنك اسناد الصلاحيات المناسبة لها وهي www-data.
فالملفات القابلة للقراءة لهذه المجموعة يمكن قراءتها من سيرفرات الويب ( لأن المستخدم بطبيعة الحال لن يسجل الدخول الى السيرفر ).

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !