நீக்கப்படாத php கோப்பை எவ்வாறு நீக்குவது. PHP இல் ஒரு கோப்பை எவ்வாறு நீக்குவது? இந்த செயல்பாடு ஏன் unlink() என்று அழைக்கப்படுகிறது
8 ஆண்டுகளுக்கு முன்பு
ஒரு பெரிய கோப்பு நீக்கப்பட்டது ஆனால் இலவச இடம் அதிகரிக்கவில்லை அல்லது வட்டு பயன்பாடு குறையவில்லையா? UNIX அல்லது மற்ற POSIX OS ஐப் பயன்படுத்துகிறீர்களா?
Unlink() என்பது கோப்பை அகற்றுவது பற்றியது அல்ல, இது ஒரு கோப்பு பெயரை அகற்றுவது பற்றியது. மேனேஜ் கூறுகிறது: ``unlink - ஒரு பெயரையும் அது குறிப்பிடும் கோப்பையும் நீக்கவும்"".
பெரும்பாலான நேரங்களில் ஒரு கோப்பிற்கு ஒரே ஒரு பெயர் மட்டுமே இருக்கும் -- அதை அகற்றினால், கோப்பின் `உடலையும்' (இலவசம், டீல்லோகேட்) நீக்கிவிடும் (ஒரு எச்சரிக்கையுடன், கீழே பார்க்கவும்). இது எளிமையான, வழக்கமான வழக்கு.
இருப்பினும், ஒரு கோப்பு ஒரே அல்லது வெவ்வேறு கோப்பகங்களில் (இணைப்பு() செயல்பாட்டைப் பார்க்கவும்) பல பெயர்களைக் கொண்டிருப்பது மிகவும் நல்லது. எல்லாப் பெயர்களும் கோப்புப் பகுதியைக் குறிக்கும் மற்றும் `அதை உயிருடன் வைத்திருங்கள்" என்று கூறலாம். அனைத்து பெயர்களும் நீக்கப்பட்டால் மட்டுமே, கோப்பின் உடல் உண்மையில் விடுவிக்கப்படும்.
எச்சரிக்கை:
கோப்பைத் திறந்து வைத்திருக்கும் ஒரு செயல்முறையின் மூலம் ஒரு கோப்பின் உடலையும் *உயிருடன் வைத்திருக்கலாம்" (இன்னும் வட்டு இடத்தைப் பயன்படுத்துகிறது). செயல்முறை திறந்த நிலையில் இருக்கும் வரை உடல் ஒதுக்கப்படாது (வட்டு இடத்தை விடுவிக்காது). உண்மையில், தவறுதலாக அகற்றப்பட்ட கோப்பை மீண்டும் உயிர்ப்பிப்பதற்கான ஒரு ஆடம்பரமான வழி உள்ளது, ஆனால் இன்னும் ஒரு செயல்முறையால் திறக்கப்பட்டுள்ளது.
10 ஆண்டுகளுக்கு முன்பு
பிரதான உரைக்கோப்பை மாற்றுவதற்கு முன் ஒரு காப்பு கோப்பு உருவாக்கப்பட்ட சில சிறிய முயற்சியில் நான் பணியாற்றி வருகிறேன். பின்னர் ஒரு பிழை ஏற்பட்டால், முக்கிய கோப்பு நீக்கப்படும் (இணைக்கப்படாதது) மற்றும் அதற்கு பதிலாக காப்பு கோப்பு திரும்பும்.
இருப்பினும், பிரதான கோப்பின் இணைப்பை நீக்குவதற்கான அனுமதிகளை ஏன் சரியாகப் பெற முடியவில்லை என்று சுமார் ஒரு மணிநேரமாக நான் தலையை உடைத்துக்கொண்டிருக்கிறேன்.
இறுதியாக என்ன தவறு என்று எனக்குத் தெரியும்: நான் கோப்பில் வேலை செய்து கொண்டிருந்ததாலும், கோப்பை இன்னும் மூடாததாலும், அது இன்னும் பயன்பாட்டில் உள்ளது, நிச்சயமாக நீக்க முடியாது :)
எனவே மற்றவர்கள் அதே தவறைச் செய்வதைத் தவிர்க்க, இதை இங்கே குறிப்பிட நினைத்தேன்:
// முதலில் கோப்பை மூடவும்
fclose ($ fp);
// பிறகு இணைப்பை நீக்கவும் :)
இணைப்பை நீக்கு ($somefile);
?>
14 ஆண்டுகளுக்கு முன்பு
ஒரு குறிப்பிட்ட நீட்டிப்பின் அனைத்து கோப்புகளையும் நீக்க, அல்லது உண்மையில், வைல்டு கார்டு மூலம் அனைத்தையும் நீக்க, குளோப் செயல்பாட்டைப் பயன்படுத்துவது மிகவும் எளிமையான வழியாகும். எல்லா jpg களையும் நீக்க விரும்புகிறேன் என்று சொல்லுங்கள்.........
Foreach (glob ("*.jpg") $filename ) (
எதிரொலி " $கோப்பு பெயர் அளவு " . கோப்பு அளவு ($ கோப்பு பெயர்) . "\n" ;
இணைப்பை நீக்கு ($ கோப்பு பெயர்);
}
?>
10 ஆண்டுகளுக்கு முன்பு
அனுமதி மறுக்கப்பட்ட பிழையில் சிக்கல் உள்ள எவருக்கும், சில நேரங்களில் அது உங்கள் பணிக் கோப்பகத்தின் படிநிலையில் உயர்ந்த கோப்புறையில் உள்ள கோப்பை நீக்க முயற்சிக்கும்போது (அதாவது தொடங்கும் பாதையை நீக்க முயற்சிக்கும்போது ஏற்படும். "../" உடன்).
எனவே இந்தச் சிக்கலைச் சமாளிக்க, chdir()ஐப் பயன்படுத்தி, நீங்கள் துண்டிக்க விரும்பும் கோப்பு இருக்கும் கோப்புறையில் செயல்படும் கோப்பகத்தை மாற்றலாம்.
$old = getcwd(); // தற்போதைய கோப்பகத்தை சேமிக்கவும்
chdir ($path_to_file);
இணைப்பை நீக்கு ($ கோப்பு பெயர்);
chdir ($ பழைய); // பழைய வேலை கோப்பகத்தை மீட்டமைக்கவும்
?>
4 வருடங்களுக்கு முன்
OSX இல், "அனுமதி மறுக்கப்பட்டது" பிழைக்கு எதிராகப் போராடும் போது, இயக்கும் php-பயனருக்கான WRITE அனுமதிகளை கோப்பகத்தில் உள்ளதா என்பதை உறுதிப்படுத்தவும்.
மேலும், நீங்கள் ACLகளை நம்பி, ஒரு கோப்பு அல்லது சிம்லிங்கை நீக்க விரும்பினால், உள்ளே உள்ள விஷயங்களைத் துண்டிக்க, "delete_child" அனுமதியைக் கொண்டிருக்க வேண்டும். நீங்கள் "நீக்கு" என்பதை மட்டும் கோப்புறைக்கு வழங்கினால், அது கொள்கலன் கோப்புறையையே நீக்க அனுமதிக்கும், ஆனால் உள்ளே உள்ள பொருட்களை அல்ல.
4 வருடங்களுக்கு முன்
இது வெளிப்படையாகத் தோன்றலாம், ஆனால் இந்தப் பிரச்சனையால் நான் என் தலைமுடியைக் கிழித்துக் கொண்டிருந்தேன் - நீங்கள் நீக்க முயற்சிக்கும் கோப்பு தற்போது பயன்படுத்தப்படவில்லை என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள். உரைக் கோப்பைப் பாகுபடுத்தும் ஒரு ஸ்கிரிப்ட் என்னிடம் இருந்தது, அதை முடித்த பிறகு அதை நீக்க வேண்டும், ஆனால் நான் கோப்பை வெளிப்படையாக மூடாததால் அனுமதி மறுக்கப்பட்ட பிழையைப் பெறுகிறேன், எனவே பாகுபடுத்தப்பட்டாலும் தொழில்நுட்ப ரீதியாக அது இன்னும் "பயன்படுத்தப்படுகிறது" முழுமை.
11 ஆண்டுகளுக்கு முன்பு
மேலே உள்ள Ggarciaa இன் இடுகையில் ஏற்கனவே ஒரு சிறிய பிழை உள்ளது, $DeleteMe தவறானதாக இருந்தாலும், Closeir பயன்படுத்தப்பட வேண்டும்
}
Closedir($dh);
என்றால் ($DeleteMe )(
@rmdir ($dir);
}
}
?>
9 மாதங்களுக்கு முன்பு
டிரை கேட்சைப் பயன்படுத்தி விதிவிலக்காக () இணைப்பை நீக்குவதன் மூலம் "வளம் கிடைக்கவில்லை" பிழையைக் கையாளுதல்
is_file() அல்லது file_exists() கூட கோப்பு இருக்கிறதா இல்லையா என்பதைச் சரிபார்க்கும், சில பயன்பாடுகளால் கோப்பு பயன்படுத்தப்படுவதற்கான வாய்ப்புகள் உள்ளன, அவை நீக்குவதைத் தடுக்கும் மற்றும் இணைப்பு நீக்கம்() "Resource Unavailable" பிழையைக் காண்பிக்கும்.
எனவே பல முறைகளை முயற்சித்த பிறகு: `is_resource()`, `is_writable()`, `stream_get_meta_data()`...etc, *"நீக்கும்போது"* பிழையைக் கையாள்வதற்கான ஒரே சிறந்த வழியை அடைந்தேன் * *இல்லை** அல்லது **இருக்கிறது ஆனால் சில பயன்பாடுகளால் பயன்படுத்தப்படுகிறது**
செயல்பாடு delete_file($pFilename)
{
(கோப்பு_இருந்தால்($pFilename)) (
// முஹம்மது.பேகவாலா சேர்த்தது
// "@" கோப்பு சில இடங்களில் திறந்திருப்பதால், "வளம் கிடைக்கவில்லை" என்ற பிழையைக் காண்பிப்பதை நிறுத்தும்.
// "unlink($pFilename) !== true" கோப்பு வெற்றிகரமாக நீக்கப்பட்டதா என்பதைச் சரிபார்க்கும்.
// எறிதல் விதிவிலக்கு, பயனர்களுக்குக் காட்டுவதற்குப் பதிலாக பிழையை எளிதாகக் கையாள முடியும்.
if(@unlink($pFilename) !== true)
புதிய விதிவிலக்கு ("கோப்பை நீக்க முடியவில்லை: " . $pFilename . " தயவுசெய்து அதைப் பயன்படுத்தும் எல்லா பயன்பாடுகளையும் மூடு.");
}
உண்மை திரும்ப;
}
/* === USAGE === */
முயற்சி (
if(delete_file("hello_world.xlsx") === true)
எதிரொலி "கோப்பு நீக்கப்பட்டது";
}
கேட்ச் (விதிவிலக்கு $e) (
எதிரொலி $e->getMessage(); // மேலே வரையறுக்கப்பட்ட விதிவிலக்கு செய்தி அச்சிடப்படும்.
}
11 ஆண்டுகளுக்கு முன்பு
மேலே உள்ள Ggarciaa இன் இடுகையில் ஒரு சிறிய பிழை உள்ளது, அது தவறு என மதிப்பிடப்பட்ட கோப்பு மற்றும் கோப்பக சரங்களை புறக்கணிக்கும் (அதாவது "0")
நிலையான குறியீடு கீழே உள்ளது (தவறான !==)
// ggarciaa at gmail dot com (04-ஜூலை-2007 01:57)
// நான் ஒரு கோப்பகத்தை காலி செய்ய வேண்டும், ஆனால் அதை வைத்திருக்கிறேன்
// அதனால் பங்களிப்பை சிறிது மாற்றியமைத்தேன்
// ஸ்டெஃபானோ அட் டேக்கிஸ் டாட் இட் (28-டிசம்பர்-2005 11:57)
// ஒரு குறுகிய ஆனால் சக்திவாய்ந்த சுழல்நிலை செயல்பாடு
// dirs மறைக்கப்பட்ட கோப்புகளைக் கொண்டிருந்தாலும் அது வேலை செய்யும்
// $dir = இலக்கு அடைவு
// $DeleteMe = உண்மை என்றால் நீக்கு $dir, பொய் என்றால் அதை அப்படியே விட்டு விடுங்கள்
செயல்பாடு SureRemoveDir ($dir, $DeleteMe) (
if(! $dh = @ opendir ($dir )) திரும்ப;
அதே நேரத்தில் (தவறான !== ($obj = readdir ($dh ))) (
if($obj == "." || $obj == ".." ) தொடரவும்;
என்றால் (!@ அன்லிங்க் ($dir . "/" . $obj )) SureRemoveDir ($dir . "/" . $obj , true );
}
என்றால் ($DeleteMe )(
Closir ($dh);
@rmdir ($dir);
}
}
//SureRemoveDir("EmptyMe", false);
//SureRemoveDir("RemoveMe", true);
?>
8 ஆண்டுகளுக்கு முன்பு
கோப்பில் (விண்டோஸில்) ODBC கட்டளைகளைப் பயன்படுத்திய பிறகு இணைப்பை நீக்குவது தோல்வியடையும்.
ஒன்றுமில்லைஅல்லது இல்லைதந்திரம் செய்தார்.
மட்டுமேகோப்பு வெளியிடப்பட்டது, அது பின்னர் நீக்கப்படலாம் ...
நாங்கள் பாடத்தைத் தொடர்கிறோம், இது தலைப்புக்கு அர்ப்பணிக்கப்பட்டுள்ளது. PHP கோப்புகளுடன் பணிபுரிதல்" நீங்கள் முந்தையதைப் படிக்கவில்லை என்றால், அதைப் படிக்க பரிந்துரைக்கிறேன், அதைப் படித்தவர்கள், தொடரலாம். இந்தப் பாடத்தில் PHP ஐப் பயன்படுத்தி உருவாக்கப்பட்ட அல்லது ஏற்கனவே உள்ள கோப்பை நீக்குவது, நகலெடுப்பது அல்லது மறுபெயரிடுவது, கோப்பைப் பூட்டுவது எப்படி என்பதை நீங்கள் கற்றுக் கொள்வீர்கள்.
சரி, நீங்கள் தயாராக இருந்தால், போருக்குச் செல்லுங்கள் ...
PHP இல் ஒரு கோப்பை நீக்குகிறது
நீங்கள் எந்த கோப்பையும் நீக்க வேண்டும் என்றால், PHP unlink() செயல்பாட்டைப் பயன்படுத்தவும்:
இணைப்பை நீக்கு(கோப்பு பெயர்);
கோப்பு பெயர் - இங்கே நீங்கள் நீக்க விரும்பும் கோப்பின் பெயரை உள்ளிடவும்.
“file.txt” கோப்பை நீக்க வேண்டும் என்று வைத்துக்கொள்வோம், நிரப்புவதற்கான உதாரணம் இப்படி இருக்கும்:
இணைப்பை நீக்கு("file.txt");
தயாராக குறியீடு: