FP-da faylni qanday o'chirish kerak? Binckink PHP - PHP faylini qanday o'chirish uchun fayllarni o'chirish

PHP - asosan dinimik veb-sahifalarni yaratish uchun ishlatiladigan dasturlash tili. Shuningdek, boshqa har qanday dasturlash tili, PHP juda ko'p imkoniyatlar mavjud, ular orasida juda foydali. Masalan, siz o'zingizning skriptingizda ishlatishingiz mumkin bo'lgan faylni o'chirish qobiliyati.

Ushbu maslahat sizga qanday qilib o'rganishga yordam beradi futni PHP-da o'chirish Funktsiyadan foydalanish bo'shatmoq.

Bosqichma-bosqich ko'rsatma:

Futni PHP-da o'chirish uchun funktsiyani ishlatishingiz mumkin bo'shatmoq. Oddiy skript misolida biz ishni tahlil qilamiz bo'shatmoq:

  1. Matn muharririda (VI / Vi, Nano, Gedit yoki oddiy daftarda) matnli fayl yarating.
  2. Quyidagi kodni unga tering yoki shunchaki nusxa ko'chiring:$ fayl \u003d "Misol.Log";
    o'chirilgan ($ fayl);
    ?>
  3. Saqlash (masalan, detuntlink.php) va yaratilgan skript faylini sinov veb-serveringiz orqali joylashtiring. Xuddi shu katalogda har qanday tarkib bilan namuna. Biz buni yo'q qilamiz.
  4. Uni brauzerga chaqirib, katalogga yana bir ma'lumot qidirib, skriptni boshqaring va siz endi u erda mavjud emasligini topasiz. Bo'shatmoq Uning ishini qildi!

Bularning barchasi qanday ishlaydi:

Skript kodining birinchi qatori: bizning ssenariyamizning turini aniqlang.

Exchangning ikkinchi qatorida: biz tomonidan yaratilgan ssenariyni ishga tushirgandan so'ng, fayl o'zgaruvchisi qiymatga tayinlanadi misol.log. (E'tibor bering, xuddi shu nomdagi fayl biz yaratgan skript kabi katalogda mavjud bo'lishi kerak. Faqat uni biron bir mazmunda yarating!).

Kodning uchinchi chizig'i: Misol faylini o'chirib, uni o'chirish funktsiyasi argumenti sifatida o'chirib tashlang.

Skript kodining to'rtinchi qatorida PHP kodining tugashi.

Ko'pincha, dasturni yaratishda fayllarni o'chirish kerak (sabablar eng boshqacha bo'lishi mumkin) va bu holda sizga yordam berish uchun Unkink PHP yordam beradi. Bugun biz fayllarni PHP-da o'chirishni o'rganamiz va bir nechta misollarni ko'rib chiqamiz.

Fayllarni o'chirib tashlang

Fayllarni o'chirish uchun, displeyk () funktsiyasidan foydalaniladi. Ushbu xususiyatning sintaksisi quyidagicha:

binckink (fayl nomi)

Ushbu funktsiya mantiqiy va shuning uchun faylni muvaffaqiyatli o'chirish holatida, haqiqiyligini qaytaradi va muvaffaqiyatsiz bo'lsa - noto'g'ri. Ishlatishni ko'rib chiqing displeyk () masalan:

Shuni ta'kidlash kerakki, ushbu sahifani qayta yuklashda dastur xato beradi. Buning sababi shundaki, funktsiya birinchi qo'ng'iroq qilganda, u allaqachon faylni o'chirib tashlagan va keyingi safar uni aniqlay olmaydigan vaqtni o'chirib qo'ygan.

Ushbu muammoni hal qilishning bir necha usullari mavjud. Masalan, siz shartli ravishda bayonotlardan foydalanib, dasturning yanada murakkab ichki arxitekturasidan foydalanishingiz mumkin. Yoki yuz o'girish xatolariga e'tibor bermaslik uchun faqat funktsiyaning oldida @ belgisini qo'yish kifoya. Bunday holda, agar fayl aniqlanmasa ham, xato boshlanmaydi:

FAP fayllarini o'chirish bilan o'chirish qiyin emas, ular aytganidek, buzilish - qurmanglar. Keyingi safar biz fayllarning holatini tekshirishni o'rganamiz.

Keling, PHP bilan bitta fayl yoki bir nechta fayllarni o'chirish uchun oddiy vazifani hal qilishga harakat qilaylik. Umuman olganda, bu erda murakkab narsa yo'q, ammo tafsilotlar, shuningdek, siz bilishingiz kerak bo'lgan echimlarning variantlari mavjud. Mening maqolamda men juda katta ahamiyatga ega bo'lishga harakat qilmayman, lekin bir nechta savollarni ifoda etish va ba'zi misollarni keltiring, deb o'ylayman. Keling, davom etaylikmi?

PHP funktsiyasi o'chirilgan ()

Va men php funktsiyalari bilan o'chiraman, bu faylni o'chirib tashlaydi:

g'altak bo'shatmoq(satr $ Fayl nomi [ manba $ kontekst])

Bu erda $ fayl nomi - Fayl va $ kontekst (ixtiyoriy) - mavzular bilan ishlash uchun kontekstlarning tavsifi (5.0.0 dan boshlab PHP-da qo'llab-quvvatlanadi). Funktsiya noto'g'ri tugatilgan yoki noto'g'ri holatda noto'g'ri bo'lsa, haqiqiy qaytaradi.

PHP funktsiyalaridan foydalanishning misoli ():

$ fayl nomi \u003d "./path/file.txt";

Nega bu funktsiya o'chirilgan displey ()?

Gap shundaki, UNIX fayl tizimida bu erda fayllarning tashqi joylashuvi va tegishli katalog tuzilishi o'rtasida farq bor. Shuning uchun faylni fayl tizimining o'ziga xos nuqtasida saqlaganda, katalog daraxtining bu nuqtasi faylning jismoniy saqlash joyiga bog'liq. Boshqacha qilib aytganda, aslida bu tugunlardan birining noyob identifikatoridir.

Shunisi e'tiborga loyiqki, Unix-da siz bir nechta bunday fikrlarni bir xil ma'lumotlarga ega bo'lishingiz mumkin. Taki ma'lumotlari kamida bitta havolasi mavjud bo'lguncha mavjud bo'ladi. Ammo agar barcha havolalar yo'q qilingan bo'lsa, ma'lumotlar o'zlari yo'q qilinadi. Shunday qilib, displeyk () funktsiyasi faylning ma'lumotlari natijasida aniq havolalar va allaqachon o'chirish uchun mo'ljallangan.

Windows-da hech qanday narsa yo'q va o'chirilgan () funktsiyasi faylni o'chiradi. Bundan tashqari, Windows uchun ba'zi php versiyalari displeyni qo'llab-quvvatlamaydi (). Bunday holda, DEL buyrug'i tizim () yoki bajarilgan () orqali ishlatiladi, masalan:

$ fayl nomi \u003d "/2014/04/file.txt";
if (Issiq ($ _ HAR QARShI ["Windrir"]))) (
@Exec ("del". $ Fayl nomi);
Agar (fayl_EXsistlar ($ fayl nomi)) o'lish ("Faylni o'chirish");
) Boshqa bo'lsa (! (@ O'chirilgan ($ fayl nomi))) (
O'lish ("faylni o'chirishda xato");
}

Bunday holda, $ _env muhit o'zgaruvchisi ["Windrir"] xizmat qilishi mumkin marker Windows platformasidan foydalanib, fayl_eXists () orqali faylni o'chirishni amalga oshirish Filing mavjudligini amalga oshiradigan PHP funktsiyasi orqali faylni o'chirishni tekshirish.

PHP-da fayl (lar) ni qanday o'chirish kerak?

Ba'zi hollarda, displey () funktsiyasi faylni o'chirish uchun kirish huquqiga ega emasligini ta'kidlashi mumkin, i.e. Biz xato olamiz : Ruxsat berilmadi.. Bu kirish huquqlari yo'qligi yoki yo'qligi bilan bog'liq bo'lishi mumkin.

Faylga yo'l bilan ishlash uchun qiziqarli variant - bu getcwd PHP funktsiyalaridan foydalanishdir () (Joriy ishchi katalogning nomini oladi) va chir () (Belgilangan katalogni belgilangan tartibda o'zgartiradi), masalan:

$ Fayl_path \u003d "yo'l /";
$ fayl_name \u003d "/2014/04/file.txt";
$ 1 \u003d getcwd ();
agar (! (@ chadir ($ fayl_pate))) o'lgan ("xato yo'l ochilishi");
agar (! ($ bo'shatilgan ($ fayl_name))) o'lgan ("Faylni o'chirish");
cQIR ($ eski);

Ko'rinib turibdiki, shunchaki navigatsiya va muammoni kuzatishni osonlashtiradi. Shu bilan birga, bu $ bir nechta katalogga o'chirilgandan keyin u ortiqcha bo'lmaydi.

Kirish muammolariga kelsak, siz PHP funktsiyasini CHMod () dan foydalanishga harakat qilishingiz mumkin (Faylga kirish rejimi), masalan:

$ fayl nomi \u003d "/2014/04/path/fil/file.txt";
@chmod ($ fayl nomi, 0666);
agar (! @ o'chirilgan ($ fayl nomi)))) o'lish ("faylni o'chirish");

Agar kerak bo'lsa katalogdagi barcha fayllarni o'chirish PHP funktsiyalarining massiv_map funktsiyalari kombinatsiyasidan foydalanish qulay (Casbuning barcha elementlariga qo'ng'iroqni boshqarish funktsiyasini qo'llaydi) va global () (shablonga mos keladigan fayl yo'llarini topadi), masalan:

array_map ("ajratish", globus ("ba'zi / DR / *. TXT"));

Fayllarni o'chirishda ko'p metrikot muammosini hal qilish

Skriptga bir vaqtning o'zida o'tkazilgan so'rovlar soni katta bo'lgan asosiy saytlar haqida gap ketganda ancha qiyin. Bu erda bir qator echimlar mavjud. Men ulardan faqat bittasini, foydalanish bo'yicha asosiy narsa beraman serfe.

Bunaqa, serfe O'ziga xos xizmat qiladi marker Jarayon. Semeoforni bitta jarayonda ushlashda uning narxi birligi pasayadi va ozod qilinganda esa - birlashtiriladi. Shu bilan birga, agar seforning hozirgi qiymati nolga teng bo'lsa, jarayon uni ushlay olmaydi va seforning chiqarilishini kutadi.

Separore resursi uchun se_get () funktsiyasi ishlatiladi. Funktsiya sexofore tomonidan bitta qiymat bilan, sexeofore sexeofore qo'lga olishi mumkin. Rasmga olish se_akquire () funktsiyasini ishlatadi. Misol:

$ \u003d Sem_get (1);
agar (SEM_ACQuire ($ SEM) && File_Exrististlar ($ fayl nomi)) @UNLINK ($ fayl nomi);
se_reme ($ SEDIM);

Fayl_existlar () fayllari mavjudligi uchun qo'shimcha chekdan foydalanishga e'tibor bering. Gap shundaki, birinchi mavzu sexada paydo bo'ladi, faylni o'chiradi va sexorni chiqaradi, ikkinchi oqim endi bu faylni o'chirmasdan amalga oshiriladi.

Ishg'ol qilingan sexorga imkon beradigan se_remaove () funktsiyasi muhim rol o'ynaydi. Agar semafor qo'yilmasa, unda parallel oqim strelkada joriy ish oxirigacha qoladi. Shuning uchun funktsiya shartdan tashqarida bo'lishi kerak.

Menda hamma narsa bor. Mening maqolada siz uchun foydali bo'lganiga va shunchaki ma'lumotli edi. E'tibor uchun rahmat. Omad!

8:00 da Xabarni tahrirlash

8 yil oldin.

Katta faylni o'chirib tashladi, lekin bo'sh joyning ko'payishiga yoki diskdan foydalanishni kamaytirishni ko'rmayapsizmi? UNIX yoki boshqa posix-dan foydalanishmi?

Oziqlantiruvchi () o'chirish faylini yo'q qilish haqida emas, balki fayl nomini olib tashlash haqida. Kanpage: "Oflayn" deb aytadi: "NOMIDAGI FAQAT".

Vaqtning ko'p qismi faylning faqat bitta ismi, shuningdek faylning tanalarini olib tashlaydi (bepul, ajratish), shuningdek faylni o'chiradi (bepul, ajratish).

Biroq, bir xil yoki boshqa kataloglarda bir nechta ismlarga ega bo'lgan fayl uchun juda yaxshi. Hamma ismlar fayl organiga murojaat qiladi va uni tirik saqlab turing ", deyish uchun. Faqat barcha nomlar olib tashlanganda, faylning tanasi aslida ozod qilinadi.

Tavrot:
Faylning tanasi * shuningdek * (diskspace-dan foydalanib, fayl bo'shlig'ida saqlanadi) Faylni oching. Jarayon uni ochib qo'ygan bo'lsa, tana ajratilmaydi (disk bo'shlig'ida bo'sh joy berilmaydi). Aslida, u erda xato bilan olib tashlanishning xayoliy qayta tirilishi, ammo hali ham jarayoni bilan ochiq bo'lib o'tdi ...

10 yil oldin.

Men asosiy to'qimafilni o'zgartirishdan oldin zaxira fayli yaratilgan ba'zi bir mayda mashqlar ustida ishlayapman. Asosiy fayl o'chiriladi (ajratilgan) va uning o'rniga zaxira fayl qaytariladi.

Xo'sh, mening chorrahamni o'chirib qo'yishga haqli ravishda men o'zimning chorrahamni ochib olishim kerakligi haqida boshim bilan boshimni sindirib tashladim.

Nihoyat men nima yomonligini bilardim: men fayl ustida ishlayotganim va hali faylni yopib qo'yganman, u hali ham ishlatilmadi va Ekscourse o'chirildi :)

Shunday qilib, men bu erda, boshqalarni bir xil xato qilishdan qochish uchun men bu erda men bilan birga:

// avval faylni yoping
fcite ($ FP);

// Keyin o'chiring :)
o'chirilgan ($ bo'sh);
?>

14 yil oldin.

Ma'lum bir kengaytmaning barcha fayllarini o'chirish yoki yoqish, barcha jokuardni o'chirish, bu global funktsiyasidan foydalanishdir. Barcha JPGSni o'chirishni xohlayotganimni ayting .........

Foreweach (Glob ("* .jpg") $ fayl nomi sifatida) (
Echo "$ fayl nomi hajmi". Fayllar ($ fayl nomi). "\\ n";
o'chirilgan ($ fayl nomi);
}

?>

10 yil oldin.

Ruxsatnomalar bilan bog'liq muammolar bo'lgan har bir kishiga xatoni rad etmagan, ba'zan ish boshlagichi bilan ishlaydigan ishni o'chirishga harakat qilganingizda (ya'ni boshlanadigan yo'lni o'chirishga harakat qilganingizda). "../" bilan).

Shunday qilib, ushbu muammo atrofida ishlash uchun siz tarmoqqa ishlov berishni istagan fayl joylashgan papkaga o'zgartirish uchun siz Chir () dan foydalanishingiz mumkin.

$ 1 \u003d getcwd (); // joriy katalogni saqlang
chiir ($ path_to_file);
o'chirilgan ($ fayl nomi);
cQIR ($ eski); // eski ishchi katalogni tiklash
?>

4 yil oldin.

OSX, "ruxsatnomani rad etilsa" xato, katalog PHP-foydalanuvchini bajarishga ruxsat berilganligiga ishonch hosil qiling.

Bundan tashqari, agar siz ACLlarga ishonsangiz va tarkibni o'z ichiga olgan faylni o'z ichiga olgan faylni o'z ichiga olgan faylni "Deet_child" ruxsatini olish kerak. Agar siz faqat konteyner papkasini o'zi o'chirib qo'yishga imkon beradigan papkaga faqat "o'chirilsa" sizga yordam beradi, lekin ichidagi ob'ektlar emas.

4 yil oldin.

Bu aniq tuyulishi mumkin, lekin men bu muammo bilan sochlarimni yirtib tashlagan edim - hozirda ishlatilmayotganingiz uchun "qayta o'chirishga urinayotganingiz" faylini tekshiring. Menda matn faylini tahlil qilgan va tugatgandan so'ng uni o'chirish kerak bo'lgan skript bor edi, ammo agar tahlil qilingan bo'lsa ham, bu texnik jihatdan "ishlatilsa ham" To'liq.

11 yil oldin.

Ggarciaa postda allaqachon bitta kichik xato bor, agar $ Yo'qotma noto'g'ri bo'lsa ham ishlatilishi kerak











}

Yukliq ($ d.);
agar ($ o'chirish vositasi) (
@ rmdir ($ dir);
}
}

?>

9 Monhs oldin.

"Resurs" resursni bekor qilish "xatoligi sababli xato sifatida xato sifatida

Hatto IS_FIL () yoki fayl mavjud () Fayl mavjud yoki yo'qligini tekshirib ko'radi, ular o'chirish va o'chirilgan "Resurs mavjud emas" xatosini namoyish etadi.

Shunday qilib, ko'plab usullarni sinab ko'rishdan keyin: "IS_EWRETRESSESASE" `, STREAM_GGGGGGGE_DATA ()` '`' ...» * * Mavjud emas yoki ** mavjud emas, lekin ba'zi dastur orqali foydalanish **

funktsiya Delete_File ($ pfilename)
{
agar (fayl_Existlar ($ pfilename)) (
// qo'shma.begavala tomonidan qo'shilgan
// "@" Telefon mavjud emas "Xato mavjud bo'lganligi sababli" Resurs mavjud emas "xatosi.
// "o'chirilgan ($ pfilename)! \u003d\u003d TREA" fayl o'chirilganligini tekshiradi.
// foydalanuvchilarga xatoni osonlashtirish o'rniga osongina tashish istisno.
Agar (@UNLINK ($ pfilename)! \u003d\u003d To'g'ri)
Yangi istisno ("" Faylni o'chirib bo'lmadi: "$ pfileame." Iltimos, foydalanadigan barcha ilovalarni yoping. ");
}
To'g'ri qaytarish;
}

/ * \u003d\u003d\u003d ishlatish \u003d\u003d\u003d * /

urinib ko'ring (
Agar (Delete_File ("Salom_world.xlsx") \u003d\u003d
Echo "o'chirildi";
}
ushlash (istisno $ e) (
Echo $ e-\u003e getMessage (); // yuqorida belgilangan istisno xabarni chop etadi.
}

11 yil oldin.

Ggarciaa "Sakkizta xato bor, bu noto'g'ri (ya'ni. 0») deb baholanadigan fayl va katalog iplarini e'tiborsiz qoldiradi (ya'ni. 0 »)

Ruxsat etilgan kod quyida (FALSE! \u003d\u003d)

// gmail dot comda gmail dot comda (04-iyul-2007 01:57)
// Men katalogni bo'shatishim kerak edi, lekin uni ushlab turish kerak
// Shunday qilib, men omonatni biroz o'zgartirdim
// Takys Doss-da Stefano (28-mart-2005 11:57)
// qisqa, ammo PowerFUL reklama funktsiyasi
// agar ishlarda yashirin fayllar bo'lsa, bu ishlaydi
// $ dir \u003d maqsadli katalog
// $ o'chirish vositasi \u003d agar haqiqiy o'chirish bo'lsa, agar u faqat u yolg'iz bo'lsa

Funktsiya RasereMedir ($ dir, $ o'chirish vositasi) (
agar (! $ dh \u003d @ openzir (DRESIR ($ dir)) qaytish;
Vaqt (FALSE! \u003d\u003d ($ Obj \u003d ReadDir ($ dh)))))) (
Agar ($ ObJ \u003d\u003d "." | $ ObJ \u003d\u003d "..") Davom etishda davom eting;
Agar ( [Elektron pochta bilan himoyalangan] O'chirish ($ dir. / $ OBJ)) Surorovovir ($ dir. / ». $ ObJ, TRUJ);
}
agar ($ o'chirish vositasi) (
yukliq ($ d.);
@ rmdir ($ dir);
}
}

// Raser Seremanoveir ("BellMe", noto'g'ri);
// RasereMedir ("effemove", haqiqat);

?>

8 yil oldin.

Fayldagi ODBC buyruqlaridan foydalangandan so'ng displey.

Na ham. Va ham emas. Hiyla qildi.

Faqat Keyinchalik o'chirilishi mumkinligini faylni chiqardi ...

Biz mavzuga bag'ishlangan darsni davom ettiramiz " PHP fayllari bilan ishlash" Agar siz avvalgisini o'qimagan bo'lsangiz, o'qishni maslahat beraman, lekin o'qiganlar. Ushbu darsda siz yaratilgan yoki mavjud faylni PHP, nusxalash yoki nomini o'chirishni, faylni blokirovka qilishni o'rganishni o'rganasiz.
Agar tayyor bo'lsangiz, unda jangda ...

PHP faylini o'chirish

Agar siz biron bir faylni o'chirish kerak bo'lsa, PHP funktsiyasidan foydalaning ():

O'chirilgan (fayl nomi);

Fayl nomi - bu erda o'chirilgan fayl nomini ko'rsating.

Keling, yozamiz, "Film.txt" faylini o'chirish kerak, bu to'ldirish uchun namuna bo'ladi:

Displeyk ("Film.txt");

Tayyor kod:



Agar "fayl.txt" fayli mavjud bo'lsa, skript olib tashlanadi.

FP-da faylni nusxalash

Agar siz tarkibni boshqa faylga qaytarish uchun bitta fayldan kerak bo'lsa, PHP funktsiyasidan nusxa oling ().

Nusxalash ("Film1", "Film2");

FILE1 - matn nusxalangan joydan fayl nomi
- fayl nomi - matn nusxalangan fayl nomi

Masalan, "Test-1" papkasida "FILE2.TXT" deb nomlangan fayl yarating. Fayl bo'sh bo'lishi kerak. Endi ushbu kodni joylashtiring nusxalash ("Film.txt", "Film2.txt"); PHP kodida "File.php":



Biz nima qildik? PHP orqali "Filer.txt" faylida qayd etilgan "File.txt" deb nomlangan PHP faylida yaratilgan Sizni blog saytida ko'rganimdan xursandman "Natijada brauzerda namoyish etildi, matnni" File.txt "faylidan nusxa ko'chirdi va" Film2.txt "fayliga kiritilgan. Hamma narsa sodir bo'lishiga ishonmangmi? Esingizda bo'lsa, "Film2.txt" fayl bo'sh edi?! Uni oching! Va nimani ko'ryapsiz? Ha, to'g'ri, "fayl.txt" faylida joylashgan matn:

FP-ga o'zgartirish kiriting

Faylni qayta nomlash uchun PHP funktsiyasidan o'zgartirish ():

Nomini o'zgartirish ("Film1", "Film2");

FILE1 - almashtiriladigan faylning nomi ( nomini o'zgartirish)
- fayl2 - Bu erda siz yangi fayl nomini berishingiz kerak

Buni to'ldirish uchun misol:

Nomini o'zgartirish ("Film2..Txt");

Bu erda tayyor kod:



"Film2.txt" fayl "Sayt.TXT" fayliga o'zgartirildi.

Bu haqida menimcha, siz bizning darsimizni tugatishingiz kerak. Ammo bu hammasi emas, keyingi darsda fayllar bilan ishlashda davom etadi.

Sizga maqola yoqdimi? Do'stlar bilan bo'lishish uchun: