Autor Zpráva
nemeja
Profil
Zdravím, odpoledne mi vyskočilo, že mám plný disk, tak jsem se rozhodl přesunout všechny složky s filmy jinam a ostatní smazat, rozhodl jsem se na to napsat jednoduchej program, bohužel vždycky když zavolám unlink na soubor, tak mi to vyhodí chybu Permission Denied. Nesetkal jste se s tím už někdo?
Přikládám kód
<?php
    $folder = "D:\\DOWNLOADS\\";
    $destination = "D:\\VIDEOS\\";
    $extensions = "avi,wmv,mov,mp4";
    define("_DELETE_ORIGINAL_DIR_", true);


    function recurse_copy($src,$dst) { 
        $dir = opendir($src); 
        @mkdir($dst); 
        while(false !== ( $file = readdir($dir)) ) { 
            if (( $file != '.' ) && ( $file != '..' )) { 
                if ( is_dir($src . '/' . $file) ) { 
                    recurse_copy($src . '/' . $file,$dst . '/' . $file); 
                    if( _DELETE_ORIGINAL_DIR_ ) rmdir($src . '/' . $file);
                } else { 
                    copy($src . '/' . $file,$dst . '/' . $file);
                    if( _DELETE_ORIGINAL_DIR_ ) unlink($src . '/' . $file);                } 
            } 
        } 
        closedir($dir); 
    } 

    echo "Program na přesunutí složek \nPočáteční:\t".$folder."\nCílová:\t".$destination."\n\n";
    $files = scandir($folder);
    foreach ($files as $file) {
        if($file == "." || $file == ".."){
            unset($files[$file]);
        } else {
            $videos = glob($folder.$file."\\*.{".$extensions."}",GLOB_BRACE);
            if($videos != null){
                echo "Přesouvám ".$file;
                recurse_copy($folder.$file,$destination.$file);
                echo "...done\n";
            }
        }
    }
Zechy
Profil
V samotné složce serveru s tímhle problém nebývá. Je možné, že PHP nemá oprávnění mazat složky mimo webserver.
nemeja
Profil
Tenhle script nespouštím z webserveru, ale pomocí cmd. Ještě mě napadá, nemají Windows něco jako je v Linuxu nastavení práv pro daný proces?
Chro
Profil
Kdysi jsem četl, že na win se musí soubor zavřít přes fclose, aby mohl být smazán. Ve skriptu vidím opendir a poté unlink ještě před closedir. Jestli to nebude něco podobného.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: