"Kioto" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Hi all I have create this function to delete directory and file but i
> have no result .
> When i call the function i don't receive any errors by PHP.
> I have test this function with PHP 4.3.6 and Apache for NT version 1.3.1
> on Windows Xp Professional
> I write this code :
> <?php
>
> error_reporting(E_ALL);
>
> function DropDir($dir) {
>
> if (is_dir($dir)) {
> if (!($handle = opendir($dir)))
> die("It' no possible open directory $dir");
>
> while(false !== ($file = readdir($handle))) {
> if ($file != '.' && $file != '..') {
> if (is_dir($dir . '/' . $file)) {
> DropDir($dir . '/' . $file);
> exec("rmdir $file");
> }
> else {
> exec("del $file");
> }
> }
> }
> closedir($handle);
> exec("rmdir $dir");
> }
> }
> file://call function DropDir
> DropDir('my_folder');
> ?>
> I think that it' impossible for me find solution to this problem.
> Can you help me ?
> Thanks so much to all an sorry for my bad language
I guess you'll first have to delete all files in the directory. Try this
function:
/**
* Recursively clear a local directory
*
* @param string $sourceDir directory to delete
* @param integer $level directory level (to avoid deleting the
root dir)
*/
function clearDirectory($sourceDir, $level = 0)
{
// proceed if source directory exists
if (is_dir($sourceDir))
{
// read dir contents
if ($handle = opendir($sourceDir))
{
/* This is the correct way to loop over the
directory. */
while(false !== ($dirItem = readdir($handle)))
{
if ($dirItem != '.' && $dirItem !=
'..')
{
// directory
if (is_dir($sourceDir . '/'
. $dirItem))
{
clearDirectory($sourceDir . '/' . $dirItem, $level + 1);
}
// file
elseif (file_exists($sourceDir
. '/' . $dirItem))
{
unlink($sourceDir .
'/' . $dirItem);
}
}
}
// remove directory if it's not the root one
if ($level > 0)
{
rmdir($sourceDir);
}
}
closedir($handle);
}
}
It will delete all direcotries and files *inside* the specified directory.
So the directory itself will not be deleted.
Just call it like this (without trailing slash!!!):
clearDirectory('/path/to/directory'); // or on windows
clearDirectory('c:\path\to\directory');
Hope it works for you.
Regards, Torsten Roehr
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php