Foros del Web » Programando para Internet » PHP »

Crear 3000 Carpetas de una vez??!

Estas en el tema de Crear 3000 Carpetas de una vez??! en el foro de PHP en Foros del Web. Hola, alguien me puede ayudar? necesito crear 3000 carpetas y poner un index.htm en cada una, las carpetas pueden ser numericas, espero puedan ayudarme, saludos....
  #1 (permalink)  
Antiguo 20/03/2004, 22:57
 
Fecha de Ingreso: marzo-2002
Mensajes: 338
Antigüedad: 22 años
Puntos: 0
Crear 3000 Carpetas de una vez??!

Hola, alguien me puede ayudar? necesito crear 3000 carpetas y poner un index.htm en cada una, las carpetas pueden ser numericas, espero puedan ayudarme, saludos.
  #2 (permalink)  
Antiguo 20/03/2004, 23:28
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 22 años, 3 meses
Puntos: 1
Podes hacerlo con un bucle que ejecute los comandos apropiados mediante system() o exec().
salu2.
  #3 (permalink)  
Antiguo 20/03/2004, 23:30
 
Fecha de Ingreso: marzo-2002
Mensajes: 338
Antigüedad: 22 años
Puntos: 0
Gracias por Responder, el problema es que soy nulo en php!!
podes postear un ejemplo!??!!?

gracias de nuevo
  #4 (permalink)  
Antiguo 20/03/2004, 23:54
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 22 años, 3 meses
Puntos: 1
Y sobre que sistema operativo debe correr este script?
Si buscas el codigo hecho deberias ver en algun repositorio, aca la idea es que vos preguntas y alguien te da una idea de como lograr lo que necesitas, solamente eso.
  #5 (permalink)  
Antiguo 20/03/2004, 23:57
 
Fecha de Ingreso: marzo-2002
Mensajes: 338
Antigüedad: 22 años
Puntos: 0
la idea es q corra en linux, gracias
  #6 (permalink)  
Antiguo 21/03/2004, 00:50
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 22 años, 3 meses
Puntos: 1
Bueno, aca te escribi unas lineas que hacen lo que necesitas pero requiere de algunas modficaciones en el sistema....tenes root en este servidor? suponiendo que si esta en vos ver si te conviene hacerlas o no.

El tema es que por lo menos yo no conosco una función de php que cree directorios y para hacerlo a traves de system necesitas permisos que el usuario comun en apache generalmente no tiene.

Para el caso te podes valer de "sudo":

Para asignarle los privilegios agregá esta linea en /etc/sudoers

www-data ALL = NOPASSWD: ALL


Donde www-data es el usuario sobre el que corre apache.
El ultimo ALL da permisos de ejecucion sobre cualquier comando lo que no es para nada recomendable pero bueno, esta hecho a la ligera.
Si lo queres optimizar: #man sudoers

El codigo php es este:

Código PHP:

$base_dir
="/var/www/";

for(
$i=1;$i 3;$i++) {

   
chdir($base_dir);
   
system("sudo mkdir $1");
   
chdir($i);
   
system("sudo touch index.html");


Este codigo te va a crear 2 directorios, para modificar la cantidad solo cambia la condicion en el bucle.

Mis conocimientos de php son bastante limitados, por ahi hay una forma mucho mas simple de hacerlo y la desconosco, mientras tanto te lo dejo para que probes.
Saludos.
  #7 (permalink)  
Antiguo 21/03/2004, 05:56
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Con este simple codigo puedes hacerlo en hatml

Código PHP:

<?

$to_path 
"";  //ruta al directorio donde se crearan las carpetas con barra finas '/'

$html="<html>\n"
      
."<head>\n"
      
."<title>Documento sin t&iacute;tulo</title>\n"
      
."<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n"
      
."</head>\n"
      
."<body>\n"
      
."</body>\n"
      
."</html>\n";

for(
$i=$i<=3000;$i++){
 
 if(!
mkdir($to_path.$i0777)) echo "<br> No se pudo crear la carpeta ".$to_path.$i;
 
$fa=fopen($to_path.$i."/index.htm""w+");
     
fwrite($fa,$html);
     
fclose($fa);
  } 
// fin for
        
}      
?>
espero que te sirva
  #8 (permalink)  
Antiguo 21/03/2004, 22:10
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 22 años, 3 meses
Puntos: 1
Claro! mkdir() es la funcion, ahora no entiendo porque en la documentación está incluida en "Funciones del sistema de ficheros" en lugar de "Funciones con directorios", por eso no podia encontrarla.
Lo malo de ese codigo es que si los directorios los necesitas crear fuera de tu directorio de trabajo, pues no va a funcionar.
  #9 (permalink)  
Antiguo 22/03/2004, 01:26
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
bueno, mkdir, te deja crear directorios hasta donde tengas permisos, o segun la configuracion del safe de tu host, si estas trabajando en tu PC, puedes crearlos hasta
en otra unidad de disco duro, si lo tienes

Mira bien la funcion mkdir(), en el manual,

saludos

Última edición por Jordi1; 22/03/2004 a las 01:28
  #10 (permalink)  
Antiguo 22/03/2004, 02:11
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 22 años, 3 meses
Puntos: 1
El muchacho no lo ha especificado, pero si se tratase de un equipo al que solo el tiene acceso, pues nada de esto tendria sentido ya que se puede hacer perfectamente desde el shell.

A propósito, que es la "configuracion del safe"?
  #11 (permalink)  
Antiguo 22/03/2004, 02:45
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Hombre para lo que quiere, crear 3.000 carpetas, con su index dentro, pues desde el shell yo no lo haria, aparte con las funciones de php en tratamiento de archivos y directorios,

Y en cuanto al safe_mode, o safe_guid, es la configuracion de seguridad que se hace en el php.ini, si esta en off, pues restringe mucho la creacion de directorios, esta bien explicado en le manual de php.net

Saludos
  #12 (permalink)  
Antiguo 22/03/2004, 02:59
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 22 años, 3 meses
Puntos: 1
Cita:
Hombre para lo que quiere, crear 3.000 carpetas, con su index dentro, pues desde el shell yo no lo haria
Y cual es el inconveniente que le ves a esto???

Cita:
Y en cuanto al safe_mode...
Se lo que es el safe mode, en todo caso seria la configuracion del php.ini en lugar de "la configuracion del safe".
  #13 (permalink)  
Antiguo 22/03/2004, 04:22
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
bueno, cada uno prefiere un sistema, y a la configuracion del safe, bueno si tienes razon, ;) seria la configuracion de php.ini, dando al safe, on o off, no es mas que una cuestion semantica,

saludos
  #14 (permalink)  
Antiguo 22/03/2004, 07:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Las ventajas de ejecutar sentencias en el S.O, como es el caso particular de crear directorios son que són más rápidas en ejecución que las equivalentes en funciones nativas de PHP. El problema es que deben ser comandos especificos para cada S.O. y los problemas comentados del "safe mode" .. directiva del php.ini que no siempre se va a poder cambiar (ejemplo un servicio de hosting).

Sin embargo .. con las funciones nativas de PHP (mkdir() para el caso concreto y afines) el código se hace "multiplataforma" .. no depende del S.O que se use y (depende donde pretendamos crear esos directorios) no le afectaría la directiva "safe mode".

Ahora sólo es cosa de evaluar si la solución al problema es "puntual" o hay previsión de hacer el código "portable" a otros S.O. y/o configuraciones de PHP.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 24/03/2004, 09:24
 
Fecha de Ingreso: junio-2003
Mensajes: 104
Antigüedad: 20 años, 10 meses
Puntos: 1
Carpetas con nombre

El tema de crear estas carpetas es interesante habria alguna forma de...
crear estas carpetas utilizando determinadas palabras ??
por ejemplo yo si quiero que con la combinacion de estas palabras
mira , foro , casa , php ...
se me formen 10 carpetas.

Ejemplo
miraforo
miracasa
miraphp
forocasa..
asi
:)


Alguna idea ?
__________________
Ado_k2 :adios:
  #16 (permalink)  
Antiguo 24/03/2004, 10:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa un array para tus palabras ... y lo lees con un bucle .. a cada pasada del bucle creas tu directorio (eso sería en la base .. ):

Código PHP:
$nombres_dir=array("miracasa","nose","blabla");
foreach (
$nombres_dir as $dir){
// el método que mas te guste para crear el directorio .. sea mkdir() de PHP o bien por funciones del S.O.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 05:32.