لن يحذف PHP 775 DIR CHMOD
-
01-10-2019 - |
سؤال
حسنًا ، ساعدني في فهم هذا.
لدي مستخدمان في نظام Linux الخاص بي كلاهما جزء من مجموعة "مستخدمي الويب".
واحد هو www-data المستخدمة من قبل خادم الويب و PHP-CGI واحد هو مستخدم FTP الخاص بي
عندما أقوم بتحميل الملفات عبر FTP ، يتم تعيينها على 775 لـ DIRS و 664 للملفات ، عندما أقوم بتشغيل برنامج نصي على الخادم (نفس المجموعة مثل مستخدم FTP) لحذف هذا الدليل والملفات: تعمل غير مرحة للملفات بشكل جيد ولكن القيادة RMDIR لا تعمل الإذن بالعودة رفضت!؟ ونعم يتم حذف الدليل بعد إفراغ.
لماذا هذا 775 يعني أن مستخدم المجموعة يمكنه حذفه تمامًا مثل 664 للملفات.
شكرًا!
المحلول
يمكنك التحقق من permissions
التابع parent
يحتوي على الدليل الذي تحاول حذفه.
كنت أحذف بعض الدلائل التي تم إنشاؤها بالسيناريو في وقت سابق من هذا الأسبوع ، وحتى مع الأذونات التي تم تعيينها 777
, ، ما زلت أحصل على "إذن رفض" حتى أعطيت نفسي Write
الوصول إلى parent
الدليل.
نصائح أخرى
واجهت نفس المشكلة من قبل ويبدو أن الكود الخاص بي أدناه:
function recurse_delete_dir($dir) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if ($file != '.' && $file != '..') {
$child_file = $dir . $file;
if (is_dir($child_file)) {
recurse_delete_dir($child_file);
}
else {
unlink($child_file);
}
}
}
rmdir($dir);
}
}
اعتقدت نفسي أنها كانت قضية إذن ولكن اتضح أنني كنت بحاجة فقط للاتصال closedir
قبل rmdir
-عمل. لذا:
closedir($dh);
rmdir($dir);
ربما مشكلتك تشبه لي؟
لا يمكنك استخدام RMDIR () على دليل يحتوي على ملفات. الدليل يجب أن تكون فارغة قبل استخدام RMDIR () لحذفه.