O'chirilmagan PHP faylni qanday o'chirish mumkin. PHP da faylni qanday o'chirish mumkin? Nima uchun bu funksiya unlink() deb ataladi
8 yil oldin
Katta faylni o'chirib tashladingiz, lekin bo'sh joy ko'paymagan yoki diskdan foydalanish kamaymaganmi? UNIX yoki boshqa POSIX OS dan foydalanyapsizmi?
Unlink() faylni o'chirish emas, balki fayl nomini o'chirish haqidadir. Manpageda aytilishicha: ``Unlink - nomni va ehtimol u tegishli faylni o'chirish"".
Ko'pincha fayl faqat bitta nomga ega bo'ladi -- uni olib tashlash faylning "tanasini" ham o'chiradi (erkin, o'chiradi) (bir ogohlantirish bilan, pastga qarang). Bu oddiy, odatiy hol.
Biroq, "fayl bir xil yoki turli kataloglarda bir nechta nomga ega bo'lishi (link() funktsiyasiga qarang). Barcha nomlar fayl tanasiga ishora qiladi va "uni tirik saqlaydi". Faqatgina barcha nomlar o'chirilgandan so'ng, fayl tanasi aslida bo'shatiladi.
Ogohlantirish:
Faylni ochiq ushlab turgan jarayon orqali fayl tanasi ham * "jonli saqlanishi" (hali ham disk maydonidan foydalanish) mumkin. Jarayon uni ochiq ushlab tursa, tana ajratilmaydi (diskda bo'sh joy bo'shmaydi). Haqiqatan ham, xato tufayli o'chirilgan, ammo jarayon tufayli ochiq bo'lgan faylni qayta tiklashning ajoyib usuli bor ...
10 yil oldin
Men asosiy matn faylini o'zgartirishdan oldin zaxira fayl yaratilgan kichik sinov ustida ishlayapman. Keyin xatolik yuz berganda, asosiy fayl o'chiriladi (uziladi) va uning o'rniga zaxira fayl qaytariladi.
Shunga qaramay, men bir soatcha boshimni sindirib yuribman, nima uchun asosiy faylni uzish uchun ruxsatnomalarimni ololmadim.
Nihoyat, nima noto'g'ri ekanligini bilib oldim: men fayl ustida ishlayotganim va faylni hali yopmaganim uchun u hali ham ishlatilmoqda va, albatta, o'chirilmaydi :)
Boshqalar ham xuddi shunday xatoga yo'l qo'ymaslik uchun men buni shu erda eslatib o'tishni o'yladim:
// Avval faylni yoping
fclose($fp);
// Keyin aloqani uzing :)
ajratish ($ somefile);
?>
14 yil oldin
Muayyan kengaytmaning barcha fayllarini o'chirish yoki barchasini joker belgilar bilan o'chirish uchun glob funktsiyasidan foydalanish juda oddiy. Aytaylik, men barcha jpg fayllarni o'chirib tashlamoqchi edim.......
Foreach (glob ("*.jpg" ) $filename sifatida) (
echo " $filename size " . fayl hajmi ($filename) . "\n" ;
ajratish ($filename);
}
?>
10 yil oldin
Ruxsatlar rad etilishi bilan bog'liq muammoga duch kelgan har bir kishi uchun xatolik ba'zan ishchi katalogingiz ierarxiyasidan yuqoriroq papkada joylashgan faylni o'chirishga harakat qilganingizda (ya'ni, boshlanadigan yo'lni o'chirishga urinayotganda) yuzaga keladi. "../" bilan).
Shunday qilib, ushbu muammoni hal qilish uchun siz chdir() dan foydalanib, ishchi katalogni ajratmoqchi bo'lgan fayl joylashgan papkaga o'zgartirishingiz mumkin.
$old = getcwd(); // Joriy katalogni saqlang
chdir ($faylga_yo'l);
ajratish ($filename);
chdir ($eski); // Eski ishchi katalogni tiklang
?>
4 yil oldin
OSX da "Ruxsat rad etildi" xatosiga qarshi kurashayotganda katalogda PHP-foydalanuvchisi uchun WRITE ruxsatlari borligiga ishonch hosil qiling.
Bundan tashqari, agar siz ACL-larga tayansangiz va fayl yoki symlinkni o'chirmoqchi bo'lsangiz, ichidagi narsalarni uzish uchun o'z ichiga olgan katalog "delete_child" ruxsatiga ega bo'lishi kerak. Agar siz konteyner jildini o'zi o'chirishga imkon beradigan papkaga faqat "o'chirish" ni bersangiz, lekin ichidagi ob'ektlarni emas.
4 yil oldin
Bu ochiq-oydin tuyulishi mumkin, lekin men bu muammo tufayli sochimni yirtib tashladim - siz o'chirmoqchi bo'lgan fayl hozirda ishlatilmayotganiga ishonch hosil qiling. Menda matnli faylni tahlil qiladigan skript bor edi va uni tugatgandan so'ng o'chirib tashlashim kerak edi, lekin ruxsatnomani rad etish xatosini olishda davom etdim, chunki men faylni aniq yopmaganman, shuning uchun u tahlil qilingan bo'lsa ham, texnik jihatdan "ishlatilgan" edi. to'liq.
11 yil oldin
Yuqoridagi Ggarciaa postida bitta kichik xatolik bor, $DeleteMe noto'g'ri bo'lsa ham closedir dan foydalanish kerak.
}
Closedir($dh);
agar ($DeleteMe )(
@rmdir($dir);
}
}
?>
9 oy oldin
"Resurs mavjud emas" xatosini unlink() funksiyasi bilan ishlash, try catch yordamida istisno sifatida
Hatto is_file() yoki file_exists() fayl mavjudligi yoki yo'qligini tekshiradi, faylni ba'zi ilovalar tomonidan foydalanilayotganligi ehtimoli bor, bu o'chirishni oldini oladi va unlink() "Resurs mavjud emas" xatosini ko'rsatadi.
Shunday qilib, `is_resource()`, `is_writable()`, `stream_get_meta_data()`...va hokazo kabi koʻplab usullarni sinab koʻrganimdan soʻng, * faylni *"oʻchirish"* paytida xatoni hal qilishning yagona eng yaxshi usuliga erishdim. *mavjud emas** yoki **mavjud, lekin ba'zi ilovalar tomonidan foydalanilmoqda**
o'chirish_fayl funksiyasi($pFilename)
{
agar (fayl_mavjud($pFilename)) (
// Muhammad.begawala tomonidan qo'shilgan
// "@" "Resurs mavjud emas" xatosini ko'rsatishni to'xtatadi, chunki fayl ba'zi joylarda ochiq.
// "unlink($pFilename) !== true" fayl muvaffaqiyatli o'chirilganligini tekshiradi.
// Foydalanuvchilarga ko'rsatish o'rniga xatoliklarni osonlik bilan hal qilishimiz uchun istisnolarni tashlash.
if(@unlink($pFilename) !== rost)
throw new Exception("Faylni o'chirib bo'lmadi: " . $pFilename . " Iltimos, undan foydalanayotgan barcha ilovalarni yoping.");
}
haqiqatni qaytarish;
}
/* === FOYDALANISH === */
harakat qilib ko'ring (
if(delete_file("hello_world.xlsx") === rost)
echo "Fayl o'chirildi";
}
tutish ($e istisno) (
echo $e->getMessage(); // yuqorida belgilangan istisno xabarini chop etadi.
}
11 yil oldin
Yuqoridagi Ggarciaa postida bitta kichik xatolik bor, u noto'g'ri deb baholangan fayl va katalog qatorlarini e'tiborsiz qoldiradi (ya'ni, "0")
Ruxsat etilgan kod quyida (false!==)
// ggarciaa da gmail dot com (04-iyul-2007 01:57)
// Men katalogni bo'shatishim kerak edi, lekin uni saqlab qoldim
// shuning uchun men hissani biroz o'zgartirdim
// stefano at takys dot it (28-dekabr 2005 11:57)
// Qisqa, ammo kuchli rekursiv funksiya
// agar dirslarda yashirin fayllar bo'lsa ham ishlaydi
// $dir = maqsadli katalog
// $DeleteMe = agar rost bo'lsa, $dir ham o'chiriladi, agar noto'g'ri bo'lsa, uni tinch qo'ying
SureRemoveDir funktsiyasi ($dir, $DeleteMe) (
if(! $dh = @ opendir ($dir )) qaytish;
while (false !== ($obj = readdir ($dh ))) (
if($obj == "." || $obj == ".." ) davom ettirish;
agar (!@ unlink ($dir . "/" . $obj )) SureRemoveDir ($dir . "/" . $obj , rost );
}
agar ($DeleteMe )(
closedir($dh);
@rmdir($dir);
}
}
//SureRemoveDir("EmptyMe", noto'g'ri);
//SureRemoveDir("RemoveMe", rost);
?>
8 yil oldin
Faylda ODBC buyruqlaridan foydalangandan so'ng (Windows-da) uzilish muvaffaqiyatsiz bo'lishi mumkin.
Yo'qnahiyla qildi.
Faqatfaylni keyin o'chirib tashlashi uchun chiqardi ...
Biz mavzuga bag'ishlangan darsni davom ettiramiz " PHP fayllari bilan ishlash" Agar avvalgisini o'qimagan bo'lsangiz, men uni o'qishni tavsiya qilaman va o'qiganlar uchun davom etaylik. Ushbu darsda siz PHP yordamida yaratilgan yoki mavjud faylni o'chirish, faylni nusxalash yoki nomini o'zgartirish, blokirovka qilishni o'rganasiz.
Xo'sh, agar tayyor bo'lsangiz, jangga boring ...
PHP da faylni o'chirish
Agar biron bir faylni o'chirish kerak bo'lsa, PHP unlink() funksiyasidan foydalaning:
Aloqani uzish (fayl nomi);
Fayl nomi - bu erda o'chirmoqchi bo'lgan fayl nomini kiriting.
Aytaylik, "file.txt" faylini o'chirishimiz kerak, to'ldirish uchun misol quyidagicha bo'ladi:
Aloqani uzish("file.txt");
Tayyor kod: