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 |
#2 · Zasláno: 3. 5. 2014, 23:46:36
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 |
#3 · Zasláno: 4. 5. 2014, 00:48:04
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 |
#4 · Zasláno: 4. 5. 2014, 01:28:28
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.
|
||
Časová prodleva: 11 let
|
0