Foros del Web » Programando para Internet » PHP »

Por favor necesito guía para resolver problema con move_uploaded_file() en subdominio

Estas en el tema de Por favor necesito guía para resolver problema con move_uploaded_file() en subdominio en el foro de PHP en Foros del Web. Hola queridos foreros. Tengo un gran problema con la función "move_uploaded_file()" para subir imagen en subdominio. Aquí les dejo el código completo, y si pueden ...
  #1 (permalink)  
Antiguo 13/11/2014, 07:42
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Por favor necesito guía para resolver problema con move_uploaded_file() en subdominio

Hola queridos foreros. Tengo un gran problema con la función "move_uploaded_file()" para subir imagen en subdominio. Aquí les dejo el código completo, y si pueden darme una manito por favor, muy agradecido estaré.

cargar-usuario.php:
Código HTML:
Ver original
  1. <form action="recibir-cargar-usuario.php" method="post" enctype="multipart/form-data">
  2.  
  3. <input type="file" name="imagen" id="imagen" />
  4.  
  5. <input type="submit" name="enviar" value="Enviar" />
  6.  
  7. </form>

recibir-cargar-usuario.php:
Código PHP:
Ver original
  1. $rutaTemporal=$_FILES['imagen']['tmp_name'];
  2. $nombreImagen=$_FILES['imagen']['name'];
  3.  
  4. $rutaEnServidor="imagenes";
  5. echo $rutaDestino=$rutaEnServidor.'/'.$nombreImagen;
  6.  
  7. if (isset($_POST['enviar'])){
  8.     move_uploaded_file($HTTP_POST_FILES['imagen']['tmp_name'],'/domains/midominio.com.ar/public_html/admin/contenido/usuarios/'.$rutaDestino);     
  9. //También probé con esto:
  10. //move_uploaded_file($HTTP_POST_FILES['imagen']['tmp_name'],'/domains/midominio.com.ar/public_html/admin/contenido/usuarios/imagenes/'.$nombreImagen)
  11. }

Mi subdominio es algo así:

"http://www.subdominio.dominio.com.ar/"

Estructura de directorios web en Dreamweaver:



Estructura de directorios web por FTP:



¿Cuál podrá ser el error: será la ruta?
  #2 (permalink)  
Antiguo 13/11/2014, 07:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Por favor necesito guía para resolver problema con move_uploaded_file() en

¿El script que ejecuta el move_uploaded_file() está en el mismo subdmonio dónde quieres guardar el archivo?

Si no es así entonces el problema es de permisos, revisa eso.

¿Si te muestra algún error por qué no lo muestras? ¿O si no te muestra nada qué esperas para habilitar el reporte de errores?

Vamos, que sólo mostrado código e imágenes no vamos a adivinar nada.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/11/2014, 08:08
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Por favor necesito guía para resolver problema con move_uploaded_file() en

Hola amigo Pateketrueke.
Sí, el script move_uploaded_file() está en el mismo subdominio - o sea- en el mismo directorio que mostré en la imagen (salvo que haya otro lugar que desconozca adonde deba ir).
Cuando uso el código que mostré no muestra ningún error, por el contrario si uso este:

Código PHP:
Ver original
  1. $rutaTemporal=$_FILES['imagen']['tmp_name'];
  2. $nombreImagen=$_FILES['imagen']['name'];
  3.  
  4. move_uploaded_file($rutaTemporal,'/domains/nombre-dominio.com.ar/public_html/admin/contenido/usuarios/imagenes/'.$nombreImagen);

Imprime:

Código HTML:
Ver original
  1. Warning: move_uploaded_file(/domains/nombre-dominio.com.ar/public_html/admin/contenido/usuarios/imagenes/1170808_414800955296748_1081929985_n.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/nombre/domains/nombre-dominio.com.ar/public_html/admin/contenido/usuarios/recibir-cargar-usuario.php on line 27
  2.  
  3. Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpNyvLi4' to '/domains/nombre-dominio.com.ar/public_html/admin/contenido/usuarios/imagenes/1170808_414800955296748_1081929985_n.jpg' in /home/biofusion/domains/nombre-dominio.com.ar/public_html/admin/contenido/usuarios/recibir-cargar-usuario.php on line 27
  #4 (permalink)  
Antiguo 13/11/2014, 08:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Por favor necesito guía para resolver problema con move_uploaded_file() en

Analiza el mensaje de error y observa que tu colocas cómo ruta inicial "/domains" que sería al nivel de la raíz del sistema de archivos, pero el script se ejecuta en "/home/biofusion/domains" entonces definitivamente no estás colocando la ruta correcta.

Si deseas ubicarte en la raíz de dicho subdominio lo correcto es usar $_SERVER['DOCUMENT_ROOT'] y a partir de ahí definir las subcarpetas restantes.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 13/11/2014, 08:26
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Por favor necesito guía para resolver problema con move_uploaded_file() en

¿Te refieres algo como esto?

Código PHP:
Ver original
  1. move_uploaded_file($rutaTemporal,$_SERVER['DOCUMENT_ROOT'].'/contenido/usuarios/imagenes/'.$nombreImagen);

Tira:
Código HTML:
Ver original
  1. Warning: move_uploaded_file(/home/biofusion/domains/nombre-dominio.com.ar/public_html/admin/contenido/usuarios/imagenes/03-figura-Pinocchio-marioneta-disney.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/biofusion/domains/nombre-dominio.com.ar/public_html/admin/contenido/usuarios/recibir-cargar-usuario.php on line 27
  2.  
  3. Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpotSUIC' to '/home/biofusion/domains/nombre-dominio.com.ar/public_html/admin/contenido/usuarios/imagenes/03-figura-Pinocchio-marioneta-disney.jpg' in /home/biofusion/domains/nombre-dominio.com.ar/public_html/admin/contenido/usuarios/recibir-cargar-usuario.php on line 27

Ahora lo analizo mejor
  #6 (permalink)  
Antiguo 13/11/2014, 09:05
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Por favor necesito guía para resolver problema con move_uploaded_file() en

Sé que todavía sigo haciendo algo mal.

Si por ejemplo, acomodo el código así:
Código PHP:
Ver original
  1. echo $rutaTemporal=$_FILES['imagen']['tmp_name'].'</br>';
  2. echo $nombreImagen=$_FILES['imagen']['name'].'</br>';
  3. echo $rutaDestino=$_SERVER['DOCUMENT_ROOT'].'/contenido/usuarios/imagenes/'.$nombreImagen.'</br>';
  4. if (isset($_POST['enviar'])){
  5.     move_uploaded_file($rutaTemporal,$rutaDestino);  
  6. }

Pinta:
Código HTML:
Ver original
  1. /tmp/php7HFLCO
  2. 1623772_493539664089543_1320136726_n.jpg
  3. /home/biofusion/domains/nombre-dominio/public_html/admin/contenido/usuarios/imagenes/1623772_493539664089543_1320136726_n.jpg

Sin arrojar error porque no me llega la imagen
  #7 (permalink)  
Antiguo 13/11/2014, 11:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Por favor necesito guía para resolver problema con move_uploaded_file() en

La función move_uploaded_file() devuelve un valor en caso de éxito o error ¿en tu caso qué devuelve?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 13/11/2014, 20:01
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Por favor necesito guía para resolver problema con move_uploaded_file() en

Pateketrueke te comento que tardé porque mejoré el código pero tampoco no carga la imagen. También me contacté con el hosting y modifiqué la carpeta "imagenes" con el permiso "777", no lanza ningún error, ningún aviso.

Este es el código:

cargar-usuario.php:
Código PHP:
Ver original
  1. <form action="recibir-cargar-usuario.php" method="post" enctype="multipart/form-data">
  2.  
  3. <input type="file" name="imagen" id="imagen" />
  4.  
  5. <input type="submit" name="enviar" value="Enviar" />
  6.  
  7. </form>

recibir-cargar-usuario.php:
Código PHP:
Ver original
  1. /* Extensiones de archivo permitidas */
  2. $ext_permitidas = array("jpg","jpeg","gif","png","bmp");
  3.  
  4. /* MIME Types permitidos */
  5. $mime_permitidas = array("image/jpeg","image/gif","image/bmp","image/bmp");
  6.  
  7. /* Directorio donde se almacenaran los archivos subidos */
  8. /* En el ejemplo se creo una carpeta llamada files dentro de la carpeta donde esta el script */
  9. $directorio = $_SERVER['DOCUMENT_ROOT'].'/contenido/usuarios/imagenes/';
  10.  
  11. /* Tamaño maximo que se aceptara (5mb) */
  12. $max_tamano = 5*(1024*1024);
  13.  
  14. /* Sobreescribir el archivo si existe, si se deja en false genera un nombre nuevo */
  15. $sobreescribir = false;
  16.  
  17. /* Comprueba si se recibio un archivo */
  18. if (isset($_FILES["imagen"]["name"])) {
  19.  
  20.     /* Variables principales del archivo subido contenidas en el array $_FILE */
  21.     $file_name = $_FILES["imagen"]["name"];
  22.     $file_temp = $_FILES["imagen"]["tmp_name"];
  23.     $file_size = $_FILES["imagen"]["size"];
  24.     $file_type = $_FILES["imagen"]["type"];
  25.     $error = $_FILES["imagen"]["error"];
  26.    
  27.  
  28.     /* Comprobacion de los errores automaticos (generados) */
  29.     /* Si $error es cero significa que no hay ningun error */
  30.     if ($error) {
  31.         switch ($error) {
  32.             case 1: die("ERROR: El tamaño es mayor al definido por la configuracion de PHP."); break;
  33.             case 2: die("ERROR: El tamaño es mayor al definido en el formulario HTML."); break;
  34.             case 3: die("ERROR: El archivo solo fue parcialmente subido."); break;
  35.             case 4: die("ERROR: Ningun archivo fue subido."); break;
  36.             case 6: die("ERROR: No existe un directorio para archivos temporales."); break;
  37.             case 7: die("ERROR: Fallo la escritura en disco del archivo."); break;
  38.             case 8: die("ERROR: Alguna extension de PHP interrumpio la subida del archivo.");
  39.         }
  40.     }
  41.  
  42.  
  43.   /* Comprueba si el tamaño del archivo no supera el tamaño maximo definido */
  44.     if ($file_size>$max_tamano) {
  45.         die("ERROR: Tamaño maximo superado.");
  46.     }
  47.    
  48.         /* Obtiene la extension del archivo */
  49.     if (!(strpos($file_name,".")===false)) {
  50.         $file_ext = strtolower(end(explode(".",$file_name)));
  51.     }
  52.  
  53.     /* Comprueba si la extension del archivo esta permitida */
  54.     if (isset($file_ext)) {
  55.         if (!in_array($file_ext,$ext_permitidas)) {
  56.             die("ERROR: El Formato del archivo no esta permitido.");
  57.         }
  58.     }
  59.    
  60.  
  61. /* Comprueba el mime-type sacado por PHP (lado del servidor: seguro) */
  62.  
  63.     $file_mime_type = reset(explode(";",finfo_file(finfo_open(FILEINFO_MIME),$file_temp)));
  64.     if (!in_array($file_mime_type,$mime_permitidas)) {
  65.         die("ERROR: El Formato del archivo no esta permitido.");
  66.     }
  67.    
  68.         /* Comprueba si el archivo existe en la ubicacion donde lo vamos a copiar */
  69.     if (file_exists($directorio.$file_name)) {
  70.  
  71.         /* Si la variable $sobreescribir es false, se le cambia el nombre al archivo */
  72.         /* En caso contrario, simplemente se deja que se sobreescriba */
  73.         if (!$sobreescribir) {
  74.             $i = 1;
  75.             while ($i) {
  76.                 if (!file_exists($directorio.$i."_".$file_name)) {
  77.                     $file_name = $i."_".$file_name;
  78.                     $i = 0;
  79.                 } else {
  80.                     $i++;
  81.                 }
  82.             }
  83.         }
  84.  
  85.     }
  86.       /* Mueve el archivo de su ruta temporal a la que nosotros le queramos asignar */
  87.     if (move_uploaded_file($file_temp,$directorio.$file_name)) {
  88.         echo "El archivo se subio exitosamente al servidor.";
  89.     } else {
  90.         echo "ERROR: El archivo no se logro subir con exito.";
  91.     }
  92.  
  93.  
  94.  
  95. }

Uff, ya no se por dónde ir . Tantas vueltas y código que me mareó
  #9 (permalink)  
Antiguo 13/11/2014, 21:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Por favor necesito guía para resolver problema con move_uploaded_file() en

¿Ningún error, ningún aviso?

¿Y al menos estás seguro que se está ejecutando el código?

Deberías depurar poco a poco para ver hasta que parte se ejecuta, es raro que no muestre nada.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 14/11/2014, 13:46
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Por favor necesito guía para resolver problema con move_uploaded_file() en

Amigo Pateketrueke gracias por tu tiempo. Pude solucionarlo con otro código y es mucho mejor PHP y Ajax.
Para aportar, si alguien tiene el mismo problema:

formulario.php:
Código HTML:
Ver original
  1.     <head>
  2.         <title>Ajax Image Upload Using PHP and jQuery</title>
  3.         <link rel="stylesheet" href="style.css" />
  4.         <link href='http://fonts.googleapis.com/css?family=Roboto+Condensed|Open+Sans+Condensed:300' rel='stylesheet' type='text/css'>
  5.         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  6.         <script src="script.js"></script>
  7.     </head>
  8.     <body>
  9.         <div class="main">
  10.         <h1>Ajax Image Upload</h1><br/>
  11.         <hr>
  12.             <form id="uploadimage" action="" method="post" enctype="multipart/form-data">
  13.                 <div id="image_preview"><img id="previewing" src="noimage.png" /></div>
  14.         <hr id="line">    
  15.             <div id="selectImage">
  16.                 <label>Select Your Image</label><br/>
  17.                 <input type="file" name="file" id="file" required />
  18.                 <input type="submit" value="Upload" class="submit" />
  19.             </div>                  
  20.             </form>    
  21.         </div>
  22.         <h4 id='loading' style="display:none;position:absolute;top:50px;left:850px;font-size:25px;">cargando...</h4>
  23.         <div id="message">         
  24.         </div>
  25.       </body>
  26. </html>

ajax_php_file:
Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_FILES["file"]["type"]))  
  4. {
  5.     $validextensions = array("jpeg", "jpg", "png");
  6.     $temporary = explode(".", $_FILES["file"]["name"]);
  7.     $file_extension = end($temporary);
  8.  
  9.     if ((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/jpeg")
  10.             ) && ($_FILES["file"]["size"] < 100000)//Approx. 100kb files can be uploaded.
  11.             && in_array($file_extension, $validextensions))
  12.     {
  13.  
  14.         if ($_FILES["file"]["error"] > 0)
  15.         {
  16.             echo "Return Code: " . $_FILES["file"]["error"] . "<br/><br/>";
  17.         }
  18.         else
  19.         {
  20.                 if (file_exists($_SERVER['DOCUMENT_ROOT']."/carpeta/upload/". $_FILES["file"]["name"])) {
  21.                 echo $_FILES["file"]["name"] . " <span id='invalid'><b>Ya existe.</b></span> ";
  22.                 }
  23.                 else
  24.                 {                  
  25.                     $sourcePath = $_FILES['file']['tmp_name'];   // Storing source path of the file in a variable
  26.                     $targetPath = $_SERVER['DOCUMENT_ROOT']."/carpeta/upload/".$_FILES['file']['name'];  // Target path where file is to be stored
  27.                     move_uploaded_file($sourcePath,$targetPath) ; //  Moving Uploaded file                     
  28.                    
  29.                     echo "<span id='success'>Imagen subida satisfactoriamente...!!</span><br/>";
  30.                     echo "<br/><b>File Name:</b> " . $_FILES["file"]["name"] . "<br>";
  31.                     echo "<b>Type:</b> " . $_FILES["file"]["type"] . "<br>";
  32.                     echo "<b>Size:</b> " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  33.                     echo "<b>Temp file:</b> " . $_FILES["file"]["tmp_name"] . "<br>";
  34.                        
  35.                 }                      
  36.         }        
  37.     }  
  38.     else
  39.     {
  40.         echo "<span id='invalid'>***Invalid file Size or Type***<span>";
  41.     }
  42. }
  43. ?>

css:
Código css:
Ver original
  1. body {
  2. font-family: 'Roboto Condensed', sans-serif;
  3. }
  4. h1
  5. {
  6. text-align: center;
  7. background-color: #FEFFED;
  8. height: 70px;
  9. color: rgb(95, 89, 89);
  10. margin: 0 0 -29px 0;
  11. padding-top: 14px;
  12. border-radius: 10px 10px 0 0;
  13. font-size: 35px;
  14. }
  15. .main {
  16. position: absolute;
  17. top: 50px;
  18. left: 20%;
  19. width: 450px;
  20. height:530px;
  21. border: 2px solid gray;
  22. border-radius: 10px;
  23. }
  24. .main label{
  25. color: rgba(0, 0, 0, 0.71);
  26. margin-left: 60px;
  27. }
  28. #image_preview{
  29. position: absolute;
  30. font-size: 30px;
  31. top: 100px;
  32. left: 100px;
  33. width: 250px;
  34. height: 230px;
  35. text-align: center;
  36. line-height: 180px;
  37. font-weight: bold;
  38. color: #C0C0C0;
  39. background-color: #FFFFFF;
  40. overflow: auto;
  41. }
  42. #selectImage{
  43. padding: 21px 21px 14px 15px;
  44. position: absolute;
  45. bottom: 0px;
  46. width: 414px;
  47. background-color: #FEFFED;
  48. border-radius: 10px;
  49. }
  50. .submit{
  51. font-size: 16px;
  52. background: linear-gradient(#ffbc00 5%, #ffdd7f 100%);
  53. border: 1px solid #e5a900;
  54. color: #4E4D4B;
  55. font-weight: bold;
  56. cursor: pointer;
  57. width: 300px;
  58. border-radius: 5px;
  59. padding: 10px 0;
  60. outline: none;
  61. margin-top: 20px;
  62. margin-left: 15%;
  63. }
  64. .submit:hover{
  65. background: linear-gradient(#ffdd7f 5%, #ffbc00 100%);
  66. }
  67. #file {
  68. color: red;
  69. padding: 5px;
  70. margin-top: 10px;
  71. border-radius: 5px;
  72. margin-left: 14%;
  73. width: 72%;
  74. }
  75. #message{
  76. position:absolute;
  77. top:120px;
  78. left:815px;
  79. }
  80. #success
  81. {
  82. color:green;
  83. }
  84. #invalid
  85. {
  86. color:red;
  87. }
  88. #line
  89. {
  90. margin-top: 285px;
  91. }
  92. #error
  93. {
  94. color:red;
  95. }
  96. #error_message
  97. {
  98. color:blue;
  99. }
  100. #loading
  101. {
  102. display:none;
  103. position:absolute;
  104. top:50px;
  105. left:850px;
  106. font-size:25px;
  107. }

Script:
Código Javascript:
Ver original
  1. $(document).ready(function (e) {
  2.     $("#uploadimage").on('submit',(function(e) {
  3.         e.preventDefault();
  4.         $("#message").empty();
  5.         $('#loading').show();
  6.         $.ajax({
  7.             url: "ajax_php_file.php",       // Url to which the request is send
  8.             type: "POST",                   // Type of request to be send, called as method
  9.             data:  new FormData(this),      // Data sent to server, a set of key/value pairs representing form fields and values
  10.             contentType: false,             // The content type used when sending data to the server. Default is: "application/x-www-form-urlencoded"
  11.             cache: false,                   // To unable request pages to be cached
  12.             processData:false,              // To send DOMDocument or non processed data file it is set to false (i.e. data should not be in the form of string)
  13.             success: function(data)         // A function to be called if request succeeds
  14.             {
  15.             $('#loading').hide();
  16.             $("#message").html(data);          
  17.             }          
  18.        });
  19.     }));
  20.  
  21. // Function to preview image
  22.     $(function() {
  23.         $("#file").change(function() {
  24.             $("#message").empty();         // To remove the previous error message
  25.             var file = this.files[0];
  26.             var imagefile = file.type;
  27.             var match= ["image/jpeg","image/png","image/jpg"]; 
  28.             if(!((imagefile==match[0]) || (imagefile==match[1]) || (imagefile==match[2])))
  29.             {
  30.             $('#previewing').attr('src','noimage.png');
  31.             $("#message").html("<p id='error'>Please Select A valid Image File</p>"+"<h4>Note</h4>"+"<span id='error_message'>Only jpeg, jpg and png Images type allowed</span>");
  32.             return false;
  33.             }
  34.             else
  35.             {
  36.                 var reader = new FileReader(); 
  37.                 reader.onload = imageIsLoaded;
  38.                 reader.readAsDataURL(this.files[0]);
  39.             }      
  40.         });
  41.     });
  42.     function imageIsLoaded(e) {
  43.         $("#file").css("color","green");
  44.         $('#image_preview').css("display", "block");
  45.         $('#previewing').attr('src', e.target.result);
  46.         $('#previewing').attr('width', '250px');
  47.         $('#previewing').attr('height', '230px');
  48.     };
  49. });

Saludos!!

Etiquetas: php+ajax
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:45.