PDA

View Full Version : rmdir



bersam
دوشنبه 30 شهریور 1388, 16:56 عصر
سلام دوستان
میدونم این سوال زیاد مطرح شده ولی جایی پیدا نکردم که جواب کامل داده شده باشه
اگه ممکنه یه sample برای پاک کردن یک دایرکتوری و تمام فایل های داخل اون بزارید
ممنون از لطفتون:چشمک:

maa_biz
دوشنبه 30 شهریور 1388, 17:07 عصر
مثال هاي اين لينك كمكت مي كنه
http://us2.php.net/manual/en/function.rmdir.php

موفق باشي

bersam
دوشنبه 30 شهریور 1388, 18:55 عصر
من یه اسکریپت پیدا کردم و اونو ادیت کردم

$dp = opendir("$REMOVE");
while($dir=readdir($dp)){
if($dir=='.')continue;
if($dir=='..')continue;
if($dir=='index.php')continue;
if($dir=='error_log')continue;
if($dir=='index.htm')continue;
if(is_dir($dir))continue;
unlink("$REMOVE/".$dir);
};
if(rmdir("$REMOVE")){
$PROMPT = "<b>$REMOVE</b> با موفقیت پاک شد.";
}
زمانی که ازش استفاده میکنم تمام فایل های داخل دایرکتوری پاک میشن
ولی با این ارور مواجه میشم

Warning: rmdir(ziba) [function.rmdir (http://localhost/cpanel/theme/function.rmdir)]: Permission denied in:
به نظرتون علتش چیه؟

afi_program
دوشنبه 30 شهریور 1388, 22:56 عصر
برای کاری که میخوای انجام بدی به اجازه دسترسی نیاز داری که در مورد فلدر مربوطه اجازه داده نشده.
موفق باشی

bersam
دوشنبه 30 شهریور 1388, 23:35 عصر
اخه تو لوکال که دیگه دسترسی نیاز نیست
هست؟
چطور میتونم این دسترسی رو ایجاد کنم؟

s_salavati2002
سه شنبه 31 شهریور 1388, 07:26 صبح
اخه تو لوکال که دیگه دسترسی نیاز نیست
هست؟
چطور میتونم این دسترسی رو ایجاد کنم؟
این مشکل معمولا برای easyphp و مخصوصا ویندوز ویستا پیش میاد


folder rightclick->properties->security

به یوزرت full permission بده

bersam
سه شنبه 31 شهریور 1388, 10:57 صبح
ابتدا از scandir استفاده کن و محتویات رو بریز توی یک آرایه , و بعد از طریق foreach و تابع unlink فایل ها رو پاک کن !
این روشی که استفاده کردم جواب نمیده؟
من ویندوزم xp هست و از برنامه xammp استفاده میکنم
:متفکر:

bersam
سه شنبه 31 شهریور 1388, 16:00 عصر
عذر میخوام اشتباه شد
منظورم مشکل دستور rmdir بود
با این که دارکتوری کاملا خالی شده ولی ارور:
Warning: rmdir(ziba) [function.rmdir (http://localhost/cpanel/theme/function.rmdir)]: Permission denied in:میده

__ziXet__
سه شنبه 31 شهریور 1388, 16:16 عصر
عذر میخوام اشتباه شد
منظورم مشکل دستور rmdir بود
با این که دارکتوری کاملا خالی شده ولی ارور:
Warning: rmdir(ziba) [function.rmdir (http://localhost/cpanel/theme/function.rmdir)]: Permission denied in:میده
خب حتما پرمیشن لازم رو برای پاک کردن نداری!

bersam
سه شنبه 31 شهریور 1388, 16:46 عصر
چطور دسترسی unlink دارم ولی rmdir ندارم؟

__ziXet__
سه شنبه 31 شهریور 1388, 17:58 عصر
چطور دسترسی unlink دارم ولی rmdir ندارم؟
فکر کنم rmdir وقتی کار میکنه که دایرکتوری خالی باشه و هیچ چیزی توش نباشه!
شما اول همه فایل های توی دایرکتوری رو باید پاک کنی و در آخر خود دایرکتوری رو.
مثلا از این فانکشن میتونی استفاده کنی:

function delTree($dir) {
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $file );
else
unlink( $file );
}
rmdir( $dir );
}
موفق باشید

yasercomeng
شنبه 04 مهر 1388, 14:56 عصر
اينم يه كده كامل كه من تو پروژه ام استفاده مي كنم و كاملا درست كار مي كنه.
فقط تنها نيازمنديش داشتن همون permission هايي كه دوستان عرض كردند!



function rmDirectory($path)




{

if (is_dir($path))
{
if (version_compare(PHP_VERSION, '5.0.0') < 0)
{
$entries = array();
if ($handle = opendir($path))
{
while (false !== ($file = readdir($handle)))
$entries[] = $file;
closedir($handle);
}
}
else
{
$entries = scandir($path);
if ($entries === false)
$entries = array(); // just in case scandir fail...
}
foreach ($entries as $entry)
{
if ($entry != '.' && $entry != '..')
{
rmDirectory($path.'/'.$entry);
}
}
return rmdir($path);
}
else
{
return unlink($path);
}
}
function rmFiles($path)
{
if (is_dir($path))
{
if (version_compare(PHP_VERSION, '5.0.0') < 0)
{
$entries = array();
if ($handle = opendir($path))
{
while (false !== ($file = readdir($handle)))
$entries[] = $file;
closedir($handle);
}
}
else
{
$entries = scandir($path);
if ($entries === false)
$entries = array(); // just in case scandir fail...
}
foreach ($entries as $entry)
{
if ($entry != '.' && $entry != '..')
rmFiles($path.'/'.$entry);
}
}
else
{
return unlink($path);
}

}