حذف پوشههای دارای فایل در PHP
یکی از مشکلاتی که قطعا در PHP با آن برخوردهاید این است که با دستورات حذف پوشه نمیتوانید پوشههای غیر خالی را حذف کنید؛ تعریف پوشههای غیر خالی این است که داخل پوشههای زیرشاخهی آن فایلهایی موجود است که امکان حذف نمیدهد. حتی با کمک FTP هم اگر بخواهید این نوع پوشهها را حذف کنید در صورتی که شامل فایلهای زیادی شود، احتمالا زمان زیادی را باید صبر کنید تا ابتدا همه فایلهای داخل پوشهها را حذف کند سپس پوشه را حذف کند. در این نوشته به شما روشی برای حذف این نوع پوشهها را میدهیم که سریعترین حالت ممکن در حد چند ثانیه این کار انجام شود.
حذف پوشههای دارای فایل در PHP
در کد بالا کافیست ورودی تابع deleteDirectory را با آدرس فولدر مورد نظر خود پر کنید؛ دقت کنید آدرسی که قصد ارسال آن به تابع را دارید باید از مسیر فایل PHP باشد که در آن این تابع ذخیره شده نه محل فراخوانی آن.
<?php
function deleteDirectory($dir) {
system('rm -rf -- ' . escapeshellarg($dir), $retval);
return $retval == 0; // UNIX commands return zero on success
}
deleteDirectory("foldername");
?>
اگر مشکلی با کد بالا داشتید در بخش نظرات همین نوشته برای ما بنویسید.



















آیا میشه به این کد گزارشگیری اضافه کرد تا لیست تمام فایلهای حذفشده قبل از اجرای نهایی ذخیره بشه؟
بله، امکان اضافه کردن گزارشگیری برای لیست فایلهای حذف شده وجود دارد، اما نیاز به تغییراتی در کد و منطق حذف دارد.
آیا این کد روی هاستهایی که safe_mode فعال دارن هم بدون مشکل اجرا میشه؟
متاسفانه این کد به دلیل استفاده از دستور system و rm -rf روی هاستهایی که safe_mode فعال دارند، اجرا نخواهد شد
آیا بهتر نیست قبل از حذف پوشه، یک بررسی اضافه کنیم که پوشه واقعا وجود داره و خالی یا پر بودنش مشخص بشه؟
بله، حق با شماست. اضافه کردن بررسی وجود پوشه قبل از حذف، یک اقدام امنیتی و منطقی است که میتواند از بروز خطا جلوگیری کند.
برای محیطهای ویندوزی هم میشه از همین روش استفاده کرد یا باید دستور متفاوتی جایگزین بشه؟
برای محیطهای ویندوزی باید از دستور rmdir /s /q به جای rm -rf استفاده کنید.
آیا استفاده از دستور rm -rf در PHP روی سرورهای اشتراکی امن هست یا ممکنه منجر به حذف ناخواسته فایلهای دیگر بشه؟
با سلام، استفاده از rm -rf در سرورهای اشتراکی نیازمند دقت فراوان است و ممکن است در صورت عدم اطمینان از مسیردهی صحیح، منجر به حذف ناخواسته فایلها شود. توصیه میشود در صورت امکان از روشهای امنتر یا با دسترسی محدودتر استفاده کنید.