Foros del Web » Programando para Internet » PHP »

Problema al querer copiar carpetas

Estas en el tema de Problema al querer copiar carpetas en el foro de PHP en Foros del Web. Hola a todos es la primera vez que pregunto algo en un foro pero me voy a volver loco por unas cuantas lines de codigo. ...
  #1 (permalink)  
Antiguo 31/05/2005, 13:41
 
Fecha de Ingreso: abril-2005
Mensajes: 139
Antigüedad: 12 años, 7 meses
Puntos: 1
Problema al querer copiar carpetas

Hola a todos es la primera vez que pregunto algo en un foro pero me voy a volver loco por unas cuantas lines de codigo.

Lo que yo quiero es "mover" carpetas con php pero no me va, aqui os dejo el codigo:

$dir=realpath("imagen");
$dir=opendir("$dir");
readdir($dir);
readdir($dir);
while($elemento = readdir($dir)){
echo $elemento."<br>";
if(copy ("$elemento","ver/$elemento")){
unlink($elemento);
}

y me da este error:

Warning: copy(arrow.gif) [function.copy]: failed to open stream: No such file or directory in C:\apachefriends\xampp\htdocs\web\admin\l.php on line 21
arrow3.gif

Por favor ayuda que estoy haciendo mal?

Gracias y un saludo.
  #2 (permalink)  
Antiguo 09/12/2005, 16:51
 
Fecha de Ingreso: abril-2005
Mensajes: 139
Antigüedad: 12 años, 7 meses
Puntos: 1
Revisando los post me encontre con este de hace algun tiempo como nadie me respondio lo hago ahora, a lo mejor le sirve a alguien.

Estas funciones resuelven el problema de mover carpetas en el servidor:

Código PHP:

//..........................copiar de un sitio a otro....................

function copyd($base$destino)
{

// Simple copy for a file
    
if (is_file($base)) {
        return 
copy($base$destino);
    }
 
    
// Make destination directory
    
if (!is_dir($destino)) {
        
mkdir($destino);
    }
 
    
// Loop through the folder
    
$dir dir($base);
    while (
false !== $entry $dir->read()) {
        
// Skip pointers
        
if ($entry == '.' || $entry == '..') {
            continue;
        }
 
        
// Deep copy directories
        
if ($dest !== "$base/$entry") {
            
copyd("$base/$entry""$destino/$entry");
        }
    }
 
    
// Clean up
    
$dir->close();
    return 
true;
}


//.................borrar carpeta.................................

function rmdird($dirname)
{
    
// Sanity check
    
if (!file_exists($dirname)) {
        return 
false;
    }
 
    
// Simple delete for a file
    
if (is_file($dirname)) {
        return 
unlink($dirname);
    }
 
    
// Loop through the folder
    
$dir dir($dirname);
    while (
false !== $entry $dir->read()) {
        
// Skip pointers
        
if ($entry == '.' || $entry == '..') {
            continue;
        }
 
        
// Recurse
        
rmdird("$dirname/$entry");
    }
 
    
// Clean up
    
$dir->close();
    return 
rmdir($dirname);

No son mias , creo que eran de un post de la pagina oficial de php.

Para mover carpetas:

Código PHP:

$path
="url de la direccion actual";
$path2="url de la direccion donde se quiere mover";

}

if(
copyd("$path","$path2"))
rmdird("$path"); 
Solo apuntar que las funciones son recursivas y copiaran y borraran todas las carpetas y archivos que se encuentren en la carpeta a mover.
__________________
Ciao y suerte.
  #3 (permalink)  
Antiguo 19/12/2005, 16:01
cao
 
Fecha de Ingreso: septiembre-2003
Ubicación: Monterrey
Mensajes: 36
Antigüedad: 14 años, 2 meses
Puntos: 0
error de sintaxis

Solo corrigo unas breves lineas de tu script:

if(copyd("$path","$path2"))
rmdird("$path");

En realidad deberia ser:

if(copy("$path","$path2"))
rmdir("$path");

Excelente aportación compañero, saludos!!!
__________________
C A O
  #4 (permalink)  
Antiguo 22/12/2005, 08:48
 
Fecha de Ingreso: abril-2005
Mensajes: 139
Antigüedad: 12 años, 7 meses
Puntos: 1
Cita:
Solo corrigo unas breves lineas de tu script:

if(copyd("$path","$path2"))
rmdird("$path");

En realidad deberia ser:

if(copy("$path","$path2"))
rmdir("$path");

Excelente aportación compañero, saludos!!!
Dadas las funciones que he propuesto la sintaxis es correcta, ya que para borrar uso la funcion que yo he construido "rmdird($dirname);" y no la funcion "rmdir(); de php.
__________________
Ciao y suerte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:07.