我需要刪除的文件夾使用PHP內容的內容的文件夾。 rmdir()
和unlink()
刪除空文件夾,但不能刪除具有文件夾的內容。如何刪除使用PHP
回答
該功能將允許你刪除任何文件夾(只要它是可寫的),它的文件和子目錄。
function Delete($path)
{
if (is_dir($path) === true)
{
$files = array_diff(scandir($path), array('.', '..'));
foreach ($files as $file)
{
Delete(realpath($path) . '/' . $file);
}
return rmdir($path);
}
else if (is_file($path) === true)
{
return unlink($path);
}
return false;
}
使用或不使用RecursiveDirectoryIterator
遞歸:
function Delete($path)
{
if (is_dir($path) === true)
{
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST);
foreach ($files as $file)
{
if (in_array($file->getBasename(), array('.', '..')) !== true)
{
if ($file->isDir() === true)
{
rmdir($file->getPathName());
}
else if (($file->isFile() === true) || ($file->isLink() === true))
{
unlink($file->getPathname());
}
}
}
return rmdir($path);
}
else if ((is_file($path) === true) || (is_link($path) === true))
{
return unlink($path);
}
return false;
}
偉大的方法,人。我使用的是非常簡單的命令: <?php system(「rm -r RESOURCE_PATH」); ?>,但不幸的是一些服務器不允許系統命令,所以你(我選擇了第一個)是一個非常好的簡單替換。謝了,兄弟。 – 2014-10-20 20:51:01
這是否也適用於相對路徑?因此我們假設完整路徑是「/ var/www/html/folder_and_files_to_delete /」並且刪除腳本位於「/var/www/html/delete_folders_and_files.php」中。我可以將「folder_and_files_to_delete」作爲路徑嗎? – yoano 2016-03-31 17:59:43
頂一下,最佳答案 – mghhgm 2017-06-16 19:33:15
您需要循環瀏覽文件夾內容(包括任何子文件夾的內容)並將其刪除。
這裏有一個例子:http://lixlpixel.org/recursive_function/php/recursive_directory_delete/
要小心它!
你將不得不遞歸刪除所有文件。有在rmdir
手冊頁的評論很多功能。例如:
沒有單一的功能建設成PHP,將允許這一點,你必須寫自己與命令rmdir及取消。
一個例子(從評論採取php.net docs):
<?
// ensure $dir ends with a slash
function delTree($dir) {
$files = glob($dir . '*', GLOB_MARK);
foreach($files as $file){
if(substr($file, -1) == '/')
delTree($file);
else
unlink($file);
}
rmdir($dir);
}
?>
什麼是GLOB_MARK? – Randell 2009-08-26 12:48:47
@Randell:GLOB_MARK - 爲每個返回的目錄添加一個斜槓。 – 2009-08-26 12:55:13
這裏有一個腳本,只是你需要什麼:
/**
* Recursively delete a directory
*
* @param string $dir Directory name
* @param boolean $deleteRootToo Delete specified top-level directory as well
*/
function unlinkRecursive($dir, $deleteRootToo)
{
if(!$dh = @opendir($dir))
{
return;
}
while (false !== ($obj = readdir($dh)))
{
if($obj == '.' || $obj == '..')
{
continue;
}
if ([email protected]($dir . '/' . $obj))
{
unlinkRecursive($dir.'/'.$obj, true);
}
}
closedir($dh);
if ($deleteRootToo)
{
@rmdir($dir);
}
return;
}
我從php.net得到它,它的工作原理。
也許是更好的辦法是使用rm
(如果你在linux下)。它會去這樣的事情($root
應始終設置你的TMP directory
防止刪除重要文件!):
function remove($dir) {
$root = $_SERVER['DOCUMENT_ROOT'].'/tmp/';
if (is_dir($root.$dir)) {
exec('rm -rf '.$root.$dir);
}
}
刪除(「/」)...將使所有的開心:) – 2012-03-10 20:07:10
哎呀。應該避免使用Shell命令。 – Volomike 2012-04-20 06:53:00
在WEB應用程序中刪除這樣的文件必須避免。如果應用程序用戶擁有權限,則提供相對路徑可以刪除系統中的任何文件。 – ArunaFromLK 2015-12-23 23:54:14
- 1. 如何使用php刪除ttf文件?
- 2. 如何使用PHP刪除文件夾?
- 3. 刪除使用PHP
- 4. 但它仍然刪除如何使用PHP刪除目錄
- 5. 如何使用php刪除/刪除mySQL中的特定錶行?
- 6. PHP如何刪除
- 7. 如何刪除PHP
- 8. 如何刪除PHP
- 9. 如何使用php刪除012使用php
- 10. PHP刪除#使用preg
- 11. 使用PHP刪除XML行
- 12. 使用php刪除行
- 13. 使用php刪除div
- 14. 刪除和使用PHP
- 15. 使用PHP刪除文件
- 16. 如何從用戶刪除確認刪除查詢之前使用php
- 17. 如何刪除$ _ SERVER從PHP
- 18. 如何刪除PHP會話?
- 19. PHP:如何刪除輸出?
- 20. 如何刪除在PHP
- 21. 如何刪除使用CDbMigration
- 22. 如何刪除使用javascript
- 23. 如何刪除使用ajax?
- 24. 如何使用sparql刪除
- 25. 如何刪除使用javascript
- 26. C++,如何(使用刪除)
- 27. 如何刪除使用SAS
- 28. 如何刪除使用*
- 29. 如何從php中刪除分號使用php
- 30. 如何使用php刪除一個php文件?
@@ Maerlyn:我已爲這個問題上8月26日2009年,你提到的一個副本發佈於2010年7月28日..我相信你知道現在要做什麼...在做某事之前,請交叉檢查一次。 – Fero 2015-01-21 08:53:33