Foros del Web » Programando para Internet » PHP »

Copiar todo un directorio a otro dir

Estas en el tema de Copiar todo un directorio a otro dir en el foro de PHP en Foros del Web. Quisiera copiar todos los archivos que tengo en un directotio a otro con que metodo puedo hacerlo probe con exec("cp -R var/www/html/desarrollo/microweb/imagenes/".$dir." var/www/html/desarrollo/microweb/imagenes/img".$anio.$mes); y con ...
  #1 (permalink)  
Antiguo 14/04/2005, 10:40
 
Fecha de Ingreso: agosto-2003
Mensajes: 203
Antigüedad: 14 años, 4 meses
Puntos: 0
Copiar todo un directorio a otro dir

Quisiera copiar todos los archivos que tengo en un directotio a otro con que metodo puedo hacerlo
probe con
exec("cp -R var/www/html/desarrollo/microweb/imagenes/".$dir." var/www/html/desarrollo/microweb/imagenes/img".$anio.$mes);
y con la funcion copy pero no los copia
Gracias por cualquier ayuda
  #2 (permalink)  
Antiguo 14/04/2005, 11:14
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
asegurate de tener los permisos necesarios en el servidor, y postea el error, o los resultados de tu script, no somos adivinos.

un saludo
  #3 (permalink)  
Antiguo 14/04/2005, 11:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La función copy() de PHP no lee archivos recursivamente .. ni los que tengas en un directorio ni en subdirectorios del mismo ...

Pero, usando las funciones para lectura de archivos de un directorio y algo más .. podrías hacerte tu funcion copy() con esa funcionalidad .. como por ejemplo:

http://aidan.dotgeek.org/lib/?file=function.copyr.php

Un saludo,
  #4 (permalink)  
Antiguo 14/04/2005, 13:20
 
Fecha de Ingreso: agosto-2003
Mensajes: 203
Antigüedad: 14 años, 4 meses
Puntos: 0
Tira un error

Probe con la funcion del link pero me tira este error,
asi cree el directorio
mkdir ("../imagenes/img200404");
chmod ("../imagenes/img200404",0777);

a la funcion la llamo asi
copyr ("../imagenes/img200503","../imagenes/img200504");

Warning: copy(): SAFE MODE Restriction in effect. The script whose uid is 782 is not allowed to access /home/virtual/site11/fst/var/www/html/desarrollo/microweb/imagenes/img200504 owned by uid 48

Warning: copy(../imagenes/img200504/destacado_2.swf): failed to open stream: No such file or directory in /home/virtual/site11/fst/var/www/html/desarrollo/microweb/admin/prerevista.php on line 49

y asi con todos los archivos del directorio

Gracias por la ayuda

Última edición por lenz; 14/04/2005 a las 13:27
  #5 (permalink)  
Antiguo 14/04/2005, 14:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cuando usas "SAFE MODE" (modo seguro) . .no sólo debes dar permiso a tus archivos con un chmod() a 777 (o menos) .. tambien parece que tienes que usar umask() .. revisalo.

Revisa también las rutas que indicas .. yo usaría absolutas completas:
/home/virtual/site11/fst/var/www/html/desarrollo/microweb/imagenes/img200504/
(también ten cuidado con acabar con / o no usarlo .. sino podría ser que te tome ese "img2000504" como un archivo (sin extensión) en lugar de un directorio.

En los comentarios de los usuarios de dicha función .. también hablan sobre que la función no chequea ni ajusta permisos cuando crea directorios (mkdir() ..) fijate en los comentarios .. La idea es la que ves: recorrer la estructura de directorios .. identificar si es un directorio para crearlo en su destino y si es un archivo .. copiarlo .. a su vez recursivamente entra a cada directorio encontrado para realizar la misma operación.

Un saludo,
  #6 (permalink)  
Antiguo 18/04/2005, 17:44
 
Fecha de Ingreso: agosto-2003
Mensajes: 203
Antigüedad: 14 años, 4 meses
Puntos: 0
Aun no pude subir las imagenes

Tampoco pude en el directorio creado hacer un upload de las archivos, probe con el move_uploaded_file ($HTTP_POST_FILES['archivo']['tmp_name'],$destino); y tampoco lo pone tambie prove poner el umask pero no tuve ningun resultado, no me tira error cuando hago el comando pero no sube los archivos.
  #7 (permalink)  
Antiguo 19/04/2005, 07:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por lenz
Tampoco pude en el directorio creado hacer un upload de las archivos, probe con el move_uploaded_file ($HTTP_POST_FILES['archivo']['tmp_name'],$destino); y tampoco lo pone tambie prove poner el umask pero no tuve ningun resultado, no me tira error cuando hago el comando pero no sube los archivos.
Será mejor que pongas el código completo que usas .. que indiques que valores tiene $HTTP_POST_FILES (o mejor usa $_FILES en lugar de esta).

Puedes usar_

Código PHP:
echo "<pre>";
print_r($_HTTP_POST_FILES);
echo 
"</pre>"
o $_FILES mejor ..

Observa que valores tienes ahí .. tal vez "tmp_name" o bien $destino no sea una ruta válida + nombre de archivo.

Un saludo,
  #8 (permalink)  
Antiguo 19/04/2005, 07:36
 
Fecha de Ingreso: agosto-2003
Mensajes: 203
Antigüedad: 14 años, 4 meses
Puntos: 0
pongo el codigo

Primero en un php creo el nuevo directorio y intento copiar las imagenes del viejo al nuevo
<?
$anio="2005";
$mes="04";
if (!is_dir ("../imagenes/img".$anio.$mes)) {
mkdir ("../imagenes/img".$anio.$mes);
chmod ("../imagenes/img".$anio.$mes,0777);
}
$dir = "img200503";
$destino = "img".$anio.$mes;
exec("cp -r
/home/virtual/site11/fst/var/www/html/desarrollo/microweb/imagenes/".$dir."/
/home/virtual/site11/fst/var/www/html/desarrollo/microweb/imagenes/".$destino."/");
?>

el directorio lo crea pero no copia las imagenes del viejo
despues en otro archivo hago el upload de nuevas imagenes a la nueva carpeta
estos son los datos de los valores del move_uploaded_files
/tmp/phpTQsgKZ ../imagenes/img200504/tapa_2.jpg

este es el error que me tira

Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 782 is not allowed to access /home/virtual/site11/fst/var/www/html/desarrollo/microweb/imagenes/img200504 owned by uid 48 in /home/virtual/site11/fst/var/www/html/desarrollo/microweb/admin/revista_accion_popup.php on line 17


aca el otro codigo que esta en un popup

<?
include ('../configuracion.php');
if ($accion=="subir") {
if ($archivo!="" and $archivo!="none") {
$dir = "img200504";
$destino = "../imagenes/".$dir."/".$_FILES['archivo']['name'];
move_uploaded_file ($_FILES['archivo']['tmp_name'],$destino);
}
?>
<SCRIPT LANGUAGE="JavaScript">
<!--
opener.location = 'revistas.php?accion=mod&id=<?=$id;?>';
window.close();
//-->
</SCRIPT>
<?
exit();
}
?>
<link href="../css/estilos.css" rel="stylesheet" type="text/css">

<FORM METHOD=POST ACTION="revista_accion_popup.php" encType="multipart/form-data">
<div align="center">
<p>
<INPUT TYPE="hidden" name="accion" value="subir">
</p>
<p>&nbsp; </p>
<TABLE border="0" cellpadding="2" cellspacing="2">
<TR>
<TD align="center" class="naranja">Nueva Imagen o Flash Revista</TD>
</TR>
<TR>
<TD>
<table>
<tr>
<td class="grisclaro2">Archivo</td>
<td><INPUT NAME="archivo" TYPE="file" class="seleccionmoto"><td>
</tr>
</table>
</TD>
</TR>
<TR>
<TD align="center"><INPUT TYPE="submit" class="seleccionmoto" value="Continuar"></TD>
</TR>
</TABLE>
</div>
</FORM>
<div align="center">
</div>
  #9 (permalink)  
Antiguo 19/04/2005, 08:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cuando usas la función exec() .. entre sus 3 parámetros tienes dos al menos para ver:
1) la salida que ocasiona la ejecución de este.
2) el error que pueda probocar.

debes constatar que exec() no te esté dando algún error (sobre permisos tal vez) antes de pretender usar dicha función. Puede ser que no tengas permisos para ejecutar comandos en shell (línea de comandos) sobre todo si usas "SAFE MODE" no está permitido.

fijate en la sintax de dicha función:
www.php.net/exec

lo que devuelven son arrays .. para que lo recorras como tal (con un foreach())

Y revisa bien el uso de umask() ..

Un saludo,
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 18:45.