حذف مجلد __macosx مع PHP؟
-
21-09-2019 - |
سؤال
هل كان لدى أي شخص أي خبرة في حذف __MACOSX
مجلد مع PHP؟
تم إنشاء المجلد بعد أن قمت بفصل أرشيف ، لكن لا يمكنني القيام بحذفه.
ال is_dir
تُرجع الدالة الخاطئة على الملف ، مما يجعل البرامج النصية للحذف العودية تفشل (لأن داخل الأرشيف هو ملفات "Temp") بحيث لا يكون الدليل فارغًا.
أنا أستخدم فئة Ziparchive المدمجة (طريقة Extractto) في PHP5.
البرنامج النصي RMDIR الذي أستخدمه هو واحد وجدته على php.net:
<?php
// ensure $dir ends with a slash
function delTree($dir) {
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $file );
else
unlink( $file );
}
rmdir( $dir );
}
?>
المحلول
لقد وجدت نسخة محسنة من الوظيفة من http://www.php.net/rmdir يتطلب php5.
- هذه الوظيفة تستخدم
DIRECTORY_SEPARATOR
بدلاً من/
. PHP تعريفDIRECTORY_SEPARATOR
كحرف مناسب لنظام التشغيل التشغيل ('/' أو ''). - لا يحتاج موقع الدليل إلى إنهاء مائل.
- تعود الوظيفة
true
أوfalse
على الانتهاء.
function deleteDirectory($dir) { if (!file_exists($dir)) return true; if (!is_dir($dir)) return unlink($dir); foreach (scandir($dir) as $item) { if ($item == '.' || $item == '..') continue; if (!deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) return false; } return rmdir($dir); }
نصائح أخرى
ما هو نظام التشغيل والنسخة التي تستخدمها؟
تحتاج إلى تصحيح المسارات إلى الدليل والملفات.
// ensure $dir ends with a slash
function delTree($dir) {
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $dir.$file );
else
unlink( $dir.$file );
}
rmdir( $dir );
}
لا تنتمي إلى StackOverflow