>"[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
>
>I write this function to delete directory and file but when i 've a
directory not empty i get error
>The code that i write is this:
>
>I receive this warning:
>Warning: rmdir(cartella): Directory not empty in c:\programmi\apache
group\apache\users\test\project\delete.php on line 23
>I have set chmod on linux chmod to 777 but i can delete folder only when is
empty.
>What I do ?
>Thanks to all and 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 shlash!!!):

clearDirectory('/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

Reply via email to