Foros del Web » Programando para Internet » PHP »

Ayuda con Copiador de directorios revisen codigo

Estas en el tema de Ayuda con Copiador de directorios revisen codigo en el foro de PHP en Foros del Web. Hola el código indicado abajopretende hacer lo siguiente: Tengo varias webs con la misma estructura y queria actualizar en todas ellas las imagenes. Primero hago ...
  #1 (permalink)  
Antiguo 15/02/2007, 12:30
 
Fecha de Ingreso: noviembre-2006
Mensajes: 70
Antigüedad: 17 años, 4 meses
Puntos: 1
Ayuda con Copiador de directorios revisen codigo

Hola el código indicado abajopretende hacer lo siguiente:

Tengo varias webs con la misma estructura y queria actualizar en todas ellas las imagenes.

Primero hago una llamada a la base de datos la cual estrae el nombre de la carpeta de cada web, y en cada bucle, con el codigo de abajo copia de un directorio llamado "archivos" todos los archivos y subdirectorios a cada directorio "imagenes" que tiene cada web.


Bien, el problema es que este código me da el siguiente error y no encuentro la solucion:

Cita:
Fatal error: Cannot redeclare dircpy() (previously declared in /home/.humperdink/webs/midominio.com/web1/admin/copiador.php:19) in /home/.humperdink/webs/midominio.com/web1/admin/copiador.php on line 19



Si alguien encontrara de que se trata este error y su posible solucion se lo agradeceria y asi aprendemos todos.


Muchas gracias!











Código PHP:
<?php

$connection 
mysql_connect('XX''XX''XX') or die('No pudo conectarse : ' mysql_error());
$db mysql_select_db('bd1',$connection) or die('No pudo seleccionarse la BD.');
$query mysql_query("SELECT * FROM registros where nombreweb is NULL limit 1");
while (
$row=mysql_fetch_array($query,MYSQL_ASSOC)) {






$basePath "./";
$source "./archivos";
$dest "../".$web."/imagenes";

  
// copy a directory and all subdirectories and files (recursive)
  // void dircpy( str 'source directory', str 'destination directory' [, bool 'overwrite existing files'] )
function dircpy($basePath$source$dest$overwrite false){
   if(!
is_dir($basePath $dest)) //Lets just make sure our new folder is already created. Alright so its not efficient to check each time... bite me
   
mkdir($basePath $dest);
   if(
$handle opendir($basePath $source)){        // if the folder exploration is sucsessful, continue
       
while(false !== ($file readdir($handle))){ // as long as storing the next file to $file is successful, continue
           
if($file != '.' && $file != '..'){
               
$path $source '/' $file;
               if(
is_file($basePath $path)){
                   if(!
is_file($basePath $dest '/' $file) || $overwrite)
                   if(!@
copy($basePath $path$basePath $dest '/' $file)){
                       echo 
'<font color="red">File ('.$path.') could not be copied, likely a permissions problem.</font>';
                   }
               } elseif(
is_dir($basePath $path)){
                   if(!
is_dir($basePath $dest '/' $file))
                   
mkdir($basePath $dest '/' $file); // make subdirectory before subdirectory is copied
                   
dircpy($basePath$path$dest '/' $file$overwrite); //recurse!
               
}
           }
       }
       
closedir($handle);
   }
}
}
?>
  #2 (permalink)  
Antiguo 15/02/2007, 13:19
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Re: Ayuda con Copiador de directorios revisen codigo

el error es claro. en algun momento incluis un archivo q ya tiene la funcion definida.
  #3 (permalink)  
Antiguo 15/02/2007, 15:08
 
Fecha de Ingreso: noviembre-2006
Mensajes: 70
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda con Copiador de directorios revisen codigo

El unico archivo que se ejecuta es el que ves ahí

En que parte incluyo un archivo que ya tiene la funcion definida????



no lo entiendo, que puedo hacer?
  #4 (permalink)  
Antiguo 15/02/2007, 15:15
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Ayuda con Copiador de directorios revisen codigo

estas redefiniendo la funcion posiblemente haces un include de el archivo copiador en otro archivo en el que ya tienes definida la funcion dinos los nombres de ls archivos que manejas y los includes que existen
  #5 (permalink)  
Antiguo 15/02/2007, 16:37
 
Fecha de Ingreso: noviembre-2006
Mensajes: 70
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda con Copiador de directorios revisen codigo

El codigo de antes era una fusion de estos dos:



Archivo Start.php:

Código PHP:
<?
include 'web.php';
$connection mysql_connect('XX''XX''XX') or die('No pudo conectarse : ' mysql_error());
$db mysql_select_db('bd1',$connection) or die('No pudo seleccionarse la BD.');
$query mysql_query("SELECT * FROM registros where nombreweb is NULL limit 1");
while (
$row=mysql_fetch_array($query,MYSQL_ASSOC)) {
echo 
"Web: ".$row['nombreweb'].". Resultado: ".updateWeb($row['nombreweb'])."<br>";

}
?>


Archivo web.php:

Código PHP:
function updateweb($web) {

$fp=fopen("logs/logs_web/logs_imagenes.txt",'wb');
$fecha=date('d-m-Y H:i:s');
fwrite($fp,"$fecha - Inicio de proceso para $web\r\n");
$gberror=0;


$basePath "./";
$source "./archivos";
$dest "../".$web."/imagenes";


function 
dircpy($basePath$source$dest$overwrite true)
{
   if(!
is_dir($basePath $dest)) //Lets just make sure our new folder is already created. Alright so its not efficient to check each time... bite me
   
mkdir($basePath $dest);
   if(
$handle opendir($basePath $source))
   {        
// if the folder exploration is sucsessful, continue
       
while(false !== ($file readdir($handle)))
       { 
// as long as storing the next file to $file is successful, continue
           
if($file != '.' && $file != '..')
           {
               
$path $source '/' $file;
               if(
is_file($basePath $path))
               {
                   if(!
is_file($basePath $dest '/' $file) || $overwrite)
                   if(!@
copy($basePath $path$basePath $dest '/' $file))
                   {
                       echo 
'<font color="red">File ('.$path.') could not be copied, likely a permissions problem.</font>';
                   }
               } elseif(
is_dir($basePath $path))
               {
                   if(!
is_dir($basePath $dest '/' $file))
                   
mkdir($basePath $dest '/' $file); // make subdirectory before subdirectory is copied
                   
dircpy($basePath$path$dest '/' $file$overwrite); //recurse!
               
}
           }
       }
       
closedir($handle);
   }
}

  #6 (permalink)  
Antiguo 15/02/2007, 17:00
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: Ayuda con Copiador de directorios revisen codigo

No se decirte sinceramente si puedas a anidar las funciones de esa forma creo que el error posiblemente se encuentra en ese detalle la funcion dircpy esta dentro de la funcion web
  #7 (permalink)  
Antiguo 15/02/2007, 17:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Ayuda con Copiador de directorios revisen codigo

Por Dios!, anidando funciones!!!!, las funciones no pueden ir asi, cada funcion tiene que ir en su bloque.
  #8 (permalink)  
Antiguo 16/02/2007, 02:13
 
Fecha de Ingreso: noviembre-2006
Mensajes: 70
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda con Copiador de directorios revisen codigo

por favor me podrian redefinir la funcion, es que no se como redefinirla y que haga la misma funcion, siguiendo el bucle en funcion de los nombres que extrae de la base de datos
  #9 (permalink)  
Antiguo 16/02/2007, 05:28
 
Fecha de Ingreso: noviembre-2006
Mensajes: 70
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Ayuda con Copiador de directorios revisen codigo

Ok ya esta solucionado,


La solucion es cerrar la funcion dircpy (sacandolo del bucle) y meter en el bucle de updateWeb
Cita:
dircpy($basePath, $source, $dest, $overwrite = true)

de este modo unicamente va variando una variable, en funcion del nombre de la web sin necesidad de reanidar la funcioon dircpy


Gracias y saludos
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 13:19.