Foros del Web » Programando para Internet » PHP »

crear directorio

Estas en el tema de crear directorio en el foro de PHP en Foros del Web. hola muy buenas tengo una serie de problemas con mi web a la hora de que funcione en mi servidor el caso es que en ...
  #1 (permalink)  
Antiguo 29/11/2012, 05:37
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 13 años, 3 meses
Puntos: 1
crear directorio

hola muy buenas

tengo una serie de problemas con mi web a la hora de que funcione en mi servidor el caso es que en local funciona perfectamente pero cuando la coloco en un servidor de pago en Internet no.

se trata de crear un directorio y copiar todo el contenido de otro dentro ha veces me crea el directorio pero no copia los archivos no entiendo y creo que le doy todos los permisos de copiar bien.

este es el código php no se si el error esta aquí o que :

Código PHP:
Ver original
  1. <?php require_once('Connections/blueberryswebtiendas.php')?>
  2. <!--aqui inicializamos las sessiones para recuperar los campos tienda y email del formulario de la pag index-->
  3. <?php
  4.  
  5. $_SESSION['email']=$_POST['email'];
  6. $_SESSION['tienda']=$_POST['tienda'];
  7.  
  8.  
  9.  
  10. //<!--aqui introducimos los datos del formulario de la pag index en la tabla tienda-->
  11.  
  12.  
  13. // Primero comprobamos que ningún campo esté vacío y que todos los campos existan.
  14. if(isset($_POST['tienda']) && !empty($_POST['tienda']) &&
  15. isset($_POST['pasword']) && !empty($_POST['pasword']) &&
  16. isset($_POST['tipo_de_tienda']) && !empty($_POST['tipo_de_tienda']) &&
  17. isset($_POST['email']) && !empty($_POST['email'])) {
  18.  
  19. // Si entramos es que todo se ha realizado correctamente
  20. $link = mysql_connect("$hostname_blueberryswebtiendas","$username_blueberryswebtiendas","$password_blueberryswebtiendas");
  21.         mysql_select_db("$database_blueberryswebtiendas",$link);
  22.  
  23.  
  24. // Con esta sentencia SQL insertaremos los datos en la base de datos
  25. mysql_query("INSERT INTO tienda (tienda,pasword,email,tipo_de_tienda)
  26. VALUES ('{$_POST['tienda']}','{$_POST['pasword']}','{$_POST['email']}','{$_POST['tipo_de_tienda']}')",$link);
  27.  
  28. // Ahora comprobaremos que todo ha ido correctamente
  29. $my_error = mysql_error($link);
  30.  
  31. }
  32.  
  33. ?>
  34.  
  35. <?php
  36. // Establecer nuestra ruta de acceso absoluta para los directorios que se crean en:
  37. $path = $_SERVER['DOCUMENT_ROOT'] . '/blueberryswebtiendas/webtiendas/';
  38.  
  39. if (isset($_POST['tienda'])) {
  40.     // Apúntese a nuestro formulario de datos
  41.     $dirName = isset($_POST['tienda'])?$_POST['tienda']:false;
  42.  
  43.     // Primero validar el valor:
  44.     if ($dirName !== false && preg_match('~([^A-Z0-9]+)~i', $dirName, $matches) === 0) {
  45.         // Tenemos un directorio válido:
  46.         if (!is_dir($path . $dirName)) {
  47.             // Somos buenos para crear este directorio:
  48.             if (mkdir($path . $dirName, 0777)) {       
  49.            
  50.             }
  51.                
  52.         }
  53.    
  54.         // Datos no válidos, htmlenttie les encajona <> se utilizaron.
  55.         $dirName = htmlentities($dirName);
  56.         $error = "Usted tiene valores no válidos en {$dirName}.";
  57.  
  58.  }
  59. }
  60.  
  61. //copia de los directorios de la plantilla al directorio del usuario
  62.  
  63.             $dirName = isset($_POST['tienda'])?$_POST['tienda']:false;
  64.             //copiando contenido de directorios
  65.             $origen = "webtiendas/plantilla/"; //pon la carpeta origen
  66.             //pon la variable $nombre o una carpeta destino que ya exista
  67.             $destino ="webtiendas/$dirName/ ";
  68.            
  69.            
  70.  
  71.  
  72. //copia de los directorios de la plantilla al directorio del usuario
  73.  
  74.             $dirName = isset($_POST['tienda'])?$_POST['tienda']:false;
  75.             //copiando contenido de directorios
  76.             $origen = "webtiendas/plantilla/"; //pon la carpeta origen
  77.             //pon la variable $nombre o una carpeta destino que ya exista
  78.             $destino ="webtiendas/$dirName/";
  79. //empezamos funcion recursiva para copiar contenidos de directorios
  80. copy_dir($origen,$destino);
  81.  
  82.  
  83. function copy_dir($origen,$destino)
  84. {
  85.  
  86. if (isset($_POST['tienda'])) {
  87.    if (is_dir($destino))
  88.       echo "El directorio destino ya existe.<br>";
  89.    else
  90.       mkdir("$destino");
  91.    if ($vcarga = opendir($origen))
  92.    {
  93.       echo "Directorio: $origen<br><br>";
  94.       echo "Fichero(s):<br><br>";
  95.       while($file = readdir($vcarga))
  96.       {
  97.          if ($file != "." && $file != "..")
  98.          {
  99.             if (is_dir($origen."/".$file))
  100.             {
  101.                copy_dir($origen."/".$file,$destino."/".$file);
  102.             }
  103.             else
  104.             {
  105.                if(copy($origen."/".$file, $destino."/".$file))
  106.                   echo "<b>$file</b> se copió con éxito al directorio $destino .<br>";
  107.             }
  108.          }
  109.       }
  110.       closedir($vcarga);
  111.    }
  112. }
  113. }
  114.  
  115.  
  116. ?>

y cuando lo intento me sale esto es como si creara el directorio pero la variable$dirname que es el nombre que debe contener el directorio no lo supiera leer:

Directorio: webtiendas/plantilla/

Fichero(s):

Directorio: webtiendas/plantilla//_notes

Fichero(s):

Directorio: webtiendas/plantilla//css

Fichero(s):

Directorio: webtiendas/plantilla//imagenes

Fichero(s):

Directorio: webtiendas/plantilla//imagenes/_notes

Fichero(s):

Directorio: webtiendas/plantilla//imagenes/botones

Fichero(s):

Directorio: webtiendas/plantilla//productos

Fichero(s):

Directorio: webtiendas/plantilla//productos/_notes

Fichero(s):

Directorio: webtiendas/plantilla//clientes

Fichero(s):

Directorio: webtiendas/plantilla//clientes/_notes

Fichero(s):


esto en local saldria mas o menos asi :

El directorio destino ya existe.
Directorio: webtiendas/plantilla/

Fichero(s):

compra.php se copió con éxito al directorio webtiendas/zara .
Directorio: webtiendas/plantilla//clientes

Fichero(s):

accesoclientes.php se copió con éxito al directorio webtiendas/zara/clientes .
clienteyaexiste.php se copió con éxito al directorio webtiendas/zara/clientes .
entradaclientes.php se copió con éxito al directorio webtiendas/zara/clientes .
errorenlosdatos.php se copió con éxito al directorio webtiendas/zara/clientes .
nuevocliente.php se copió con éxito al directorio webtiendas/zara/clientes .
Directorio: webtiendas/plantilla//clientes/_notes


si alguien me puede ayudar se lo agradecería mucho
  #2 (permalink)  
Antiguo 29/11/2012, 07:10
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: crear directorio

veo que dentro de la función recursiva también creas directorios, pero sin los permisos, revisa ése punto
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 29/11/2012, 07:21
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: crear directorio

en ese punto se copian como se haría lo que dices tu, dar permisos a esos que se copian
  #4 (permalink)  
Antiguo 29/11/2012, 09:01
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: crear directorio

quieres decir que eso es el problema
  #5 (permalink)  
Antiguo 29/11/2012, 09:39
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 8 meses
Puntos: 33
Respuesta: crear directorio

Podria ser ese el problema por lo que revisa este función chmod().
saludos.
  #6 (permalink)  
Antiguo 29/11/2012, 10:02
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: crear directorio

no lo entiendooooo
  #7 (permalink)  
Antiguo 29/11/2012, 10:06
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 8 meses
Puntos: 33
Respuesta: crear directorio

Es decir:

Código PHP:
  if (is_dir($destino))
      echo 
"El directorio destino ya existe.<br>";
   else
  {
      
mkdir("$destino"); 
      
chmod($destino,0755); // agrego permisos a la carpeta
  


Saludos.
  #8 (permalink)  
Antiguo 29/11/2012, 10:17
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: crear directorio

no me funciona se mantiene igual y por cierto los permisos no deberían ser 0777
  #9 (permalink)  
Antiguo 29/11/2012, 10:24
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 8 meses
Puntos: 33
Respuesta: crear directorio

Esto muy raro, lo que te recomiendo es poner echo's en el código para ver en donde se esta atorando, es decir:


Código PHP:
   if (is_dir($destino))
      echo 
"El directorio destino ya existe.<br>";
   else
   {
      
mkdir("$destino");
      echo 
"creo carpeta";//
   
}
   if (
$vcarga opendir($origen))
   {
      echo 
"Directorio: $origen<br><br>";
      echo 
"Fichero(s):<br><br>"
  
//....
            
if (is_dir($origen."/".$file))
            {
              echo 
"Entra a funcion recursiva";//
               
copy_dir($origen."/".$file,$destino."/".$file);
            }
            else
            {
               if(
copy($origen."/".$file$destino."/".$file))
                  echo 
"<b>$file</b> se copió con éxito al directorio $destino .<br>";
               else 
                 echo 
"Error"//
            

  #10 (permalink)  
Antiguo 29/11/2012, 10:38
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: crear directorio

me sale esto

creo carpetaDirectorio: webtiendas/plantilla/

Fichero(s):

ErrorErrorcreo carpetaDirectorio: webtiendas/plantilla//_notes

Fichero(s):

ErrorErrorErrorErrorErrorErrorErrorErrorErrorError ErrorErrorErrorcreo carpetaDirectorio: webtiendas/plantilla//css

Fichero(s):

ErrorErrorcreo carpetaDirectorio: webtiendas/plantilla//imagenes

Fichero(s):

ErrorErrorcreo carpetaDirectorio: webtiendas/plantilla//imagenes/_notes

Fichero(s):

Errorcreo carpetaDirectorio: webtiendas/plantilla//imagenes/botones

Fichero(s):

ErrorErrorErrorErrorErrorErrorErrorErrorErrorError creo carpetaDirectorio: webtiendas/plantilla//productos

Fichero(s):

Errorcreo carpetaDirectorio: webtiendas/plantilla//productos/_notes

Fichero(s):

ErrorErrorErrorErrorErrorErrorErrorErrorErrorError Errorcreo carpetaDirectorio: webtiendas/plantilla//clientes

Fichero(s):

Errorcreo carpetaDirectorio: webtiendas/plantilla//clientes/_notes

Fichero(s):

ErrorErrorErrorErrorErrorErrorError
  #11 (permalink)  
Antiguo 29/11/2012, 10:52
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: crear directorio

A mi me da la sensación que $_POST['tienda'] no esta llegando con datos, por ende $dirname es NULL, intenta hacer un var_dump o un echo de $_POST['tienda'] en primer lugar, para ver si te trae lo que estas esperando.

Saludos
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #12 (permalink)  
Antiguo 29/11/2012, 10:56
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: crear directorio

en la base de datas se insertan bien los datos
  #13 (permalink)  
Antiguo 29/11/2012, 11:03
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: crear directorio

Cita:
Iniciado por carolina3 Ver Mensaje
en la base de datas se insertan bien los datos
Me alegro mucho, pero esa no fue mi pregunta.

Repito, haz un var_dump o un echo de $_POST['tienda'] para ver si tiene lo que deseas.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #14 (permalink)  
Antiguo 29/11/2012, 11:09
 
Fecha de Ingreso: agosto-2011
Ubicación: barcelona
Mensajes: 237
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: crear directorio

h2swider si que lo obtiene por que debajo de esto tengo un formulario y si me sale lo que deseo obtener
  #15 (permalink)  
Antiguo 29/11/2012, 11:16
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: crear directorio

Bueno mira, la unica manera de que te pase esto webtiendas/plantilla//_notes
es que $_POST['tienda'] llegue vacio, no des por sentado que esta bien. Sigue el consejo de mauled o el mio e intenta imprimir que valores tiene.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Etiquetas: directorio, formulario, html, imagenes, mysql, sql, tabla, variables, usuarios
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 14:43.