متى تكون البيانات غير مقروئة للدالة is_readable بلغة php
السلام عليكم
بلغة 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");
}
}
الامر الذي اود التأكد منه هل سيفشل الشرط في حال عدم وجود الملف فقط ام هناك حالات اخرى ؟
شكراً
الإجابة الصحيحة
الدالة ترجع 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)
الدالة ترجع 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.
فالملفات القابلة للقراءة لهذه المجموعة يمكن قراءتها من سيرفرات الويب ( لأن المستخدم بطبيعة الحال لن يسجل الدخول الى السيرفر ).
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !