Foros del Web » Programando para Internet » PHP »

Problemas con move_uploaded_file

Estas en el tema de Problemas con move_uploaded_file en el foro de PHP en Foros del Web. Buenas gente. Tengo problemas con el move_uploaded_file no carga en la carpeta que deseo que cargue El servidor es linux cargo los archivos por SFTP, ...
  #1 (permalink)  
Antiguo 25/07/2016, 13:34
 
Fecha de Ingreso: diciembre-2015
Ubicación: Parguay
Mensajes: 21
Antigüedad: 8 años, 3 meses
Puntos: 0
Exclamación Problemas con move_uploaded_file

Buenas gente.

Tengo problemas con el move_uploaded_file no carga en la carpeta que deseo que cargue
El servidor es linux cargo los archivos por SFTP, ya intente con diferentes tipos de comprobaciones pero no carga y no reconozco aun el error.

Les paso el codigo para que vean

Código PHP:
<?php if ((isset($_POST["enviado"])) && ($_POST["enviado"] == "form1")) {
  
$nombre_archivo $_FILES['userfile']['name']; 
  
move_uploaded_file($_FILES['userfile']['tmp_name'], "../banner/".$nombre_archivo);
  
  
//Ruta de la original
$rtOriginal="../banner/".$nombre_archivo;
     
//Crear variable de imagen a partir de la original
$original imagecreatefromjpeg($rtOriginal)or die('Error al crear la imagen');
     
//Definir tamaño máximo y mínimo
$ancho_final 1200;
$alto_final 300;
 
//Recoger ancho y alto de la original
list($ancho,$alto)=getimagesize($rtOriginal);
 
$lienzo=imagecreatetruecolor($ancho_final,$alto_final);
 
//Copiar $original sobre la imagen que acabamos de crear en blanco ($tmp)
imagecopyresampled($lienzo,$original,0,0,0,0,$ancho_final$alto_final,$ancho,$alto)or die('Error al crear la imagen ');
 
//Limpiar memoria
imagedestroy($original);
 
//Definimos la calidad de la imagen final
$cal=150;

//Se crea la imagen final en el directorio indicado
imagejpeg($lienzo,"../banner/".$nombre_archivo,$cal);
}
else
{
?>
Ya se que las frases "Error al crear la imagen" no especifica nada pero ya me hizo llegar a la conclusion de que es porque no mueve la imagen a la carpeta banner los permisos del archivo donde estan albergados esos codigos son 744



NO PILLO AUN CUAL ES EL ERROR

Desde ya muchas gracias
  #2 (permalink)  
Antiguo 25/07/2016, 13:46
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Problemas con move_uploaded_file

y la carpeta "banner" ya tiene los permisos 775 ¿?
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 25/07/2016, 13:54
 
Fecha de Ingreso: diciembre-2015
Ubicación: Parguay
Mensajes: 21
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con move_uploaded_file

No tenia, pero ahora le puse eh igual no sube
  #4 (permalink)  
Antiguo 25/07/2016, 14:33
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Problemas con move_uploaded_file

al crear la imagen y descargas la imagen en tu equipo la imagen te la genera bien?


quitale la ruta de destino y deja solo el nombre del archivo y arriba de imagejpeg pone el header

Última edición por __SDP__; 25/07/2016 a las 14:40
  #5 (permalink)  
Antiguo 25/07/2016, 14:55
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Problemas con move_uploaded_file

Una cosa a tener encuenta al subir imagenes o cualquier otro archivo, es que por defecto el tamaño maximo suele ser de 2MB.

Se puede astablecer o modificar este comportamiento con la directiva upload_max_filesize

Descarta que el error no venga por ahí.
__________________
Unset($vida['malRollo']);

Última edición por xerifandtomas; 25/07/2016 a las 15:01
  #6 (permalink)  
Antiguo 26/07/2016, 13:30
 
Fecha de Ingreso: diciembre-2015
Ubicación: Parguay
Mensajes: 21
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con move_uploaded_file

La imagen no se crea, al comprobar si el codigo realizo algo en la carpeta banner, no encuentro nada.

De momento alzo yo por Filezilla, pero no puedo entregarle a si al cliente....

Este fragmento de codigo es la tercera vez que utilizo, y es la primera vez que me pasa esto, pero antes todos los servidores que me proveian para trabajar eran windows (a modo de comentario, porque creo que va por ese lado)

Cita:
Una cosa a tener encuenta al subir imagenes o cualquier otro archivo, es que por defecto el tamaño maximo suele ser de 2MB.

Se puede astablecer o modificar este comportamiento con la directiva upload_max_filesize

Descarta que el error no venga por ahí.
No se si puede ser eso, el servidor posee un gran tamaño, pero voy a probar
  #7 (permalink)  
Antiguo 01/08/2016, 12:21
 
Fecha de Ingreso: diciembre-2015
Ubicación: Parguay
Mensajes: 21
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Problemas con move_uploaded_file

Como modifico el tamaño por defecto?ç

Tengo que ingresare al php.ini no?
O como se podria de otra manera?
Efectivamente no sube la imagen

Código PHP:
Ver original
  1. <?php if ((isset($_POST["enviado"])) && ($_POST["enviado"] == "form1")) {
  2.   $nombre_archivo = $_FILES['userfile']['name'];
  3.   move_uploaded_file($_FILES['userfile']['tmp_name'], "banner_img/".$nombre_archivo)or die("ERROR: no se ha subido la imagen");
  4.  
  5.   //Ruta de la original
  6. $rtOriginal="banner_img/".$nombre_archivo;
  7.      
  8. //Crear variable de imagen a partir de la original
  9. $original = imagecreatefromjpeg($rtOriginal)or die('Error al crear la imagen: imagecreatefromjpeg');
  10.      
  11. //Definir tamaño máximo y mínimo
  12. $ancho_final = 1200;
  13. $alto_final = 300;
  14.  
  15. //Recoger ancho y alto de la original
  16. list($ancho,$alto)=getimagesize($rtOriginal);
  17.  
  18. $lienzo=imagecreatetruecolor($ancho_final,$alto_final);
  19.  
  20. //Copiar $original sobre la imagen que acabamos de crear en blanco ($tmp)
  21. imagecopyresampled($lienzo,$original,0,0,0,0,$ancho_final, $alto_final,$ancho,$alto)or die('Error al crear la imagen:   imagecopyresampled ');
  22.  
  23. //Limpiar memoria
  24. imagedestroy($original);
  25.  
  26. //Definimos la calidad de la imagen final
  27. $cal=150;
  28. Header("Content-type: image/jpeg");
  29. //Se crea la imagen final en el directorio indicado
  30. imagejpeg($lienzo,"banner_img/".$nombre_archivo,$cal);
  31.   ?>
  32.  
  33.     <script>
  34.     opener.document.form1.<?php echo $_POST["nombrecampo"]; ?>.value="<?php echo $nombre_archivo; ?>";
  35.     self.close();
  36.   </script>
  37.     <?php
  38. }
  39. else
  40. {?>

Y asi quedo, me salta el OR DIE del move_uploaded_file
- Lo unico que no probe es lo de upload_max_filesize que no se como hacer.
me enseñan la teoria por lo menos les voy a agradecer

PD: Cambie el nombre del directorio, para descartar tambien, antes salia, ahora cree un directorio dentro del mismo directorio donde esta el archivo
  #8 (permalink)  
Antiguo 01/08/2016, 12:57
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Problemas con move_uploaded_file

Te paso un Script que puse aquí hace algún tiempo como ejemplo para subir varias imagenes.

Código PHP:
<?php
/**

* XERIFANDTOMAS
*
*  Guarda una o varias imagenes en el servidor
*
* @param array $file ( OBILIGATORIO )
*   Debe de pasarse $_FILES habiendo subido los archivos en el form con name="myNombre[]"
*
* @param string $nombre ( OPCIONAL )
*   Default: img
*   nombre para la imagen,los caracteres extraños seran cambiados por eliminar_simbolos()
*   Se añade marca de tiempo+identificador ( dmYHis-key )
*   Ejemplo: MyImg-21022016154613-1.jpg
*
* @param string $ruta ( OPCIONAL )
*   Default: $_SERVER['DOCUMENT_ROOT']/img/
*   Ruta de la imagen final 
*
* @param string $max_size ( OPCIONAL )
*   Default: 2000000 (5MB)
*   Tamaño máximo permitido de la imagen
*
* @param int $max_archivos ( OPCIONAL )
*   Default: 5
*   Número máximo de archivos que se pueden subir a la vez
*
*
*
* @return ARRAY / String
*  En caso de éxito:  Devuelve un array con los nombres de las imagenes
*  En caso de error:  Debuelve un string con el mensaje de error
*/
function upload_img($file,$nombre="img",$ruta="",$max_size"2000000",$max_archivos=5){
    
$tipos_de_archivos= array("image/jpeg","image/jpg","image/png");

    if (
$ruta=="") { $ruta $_SERVER['DOCUMENT_ROOT']."/img/"; }
    if ( !
file_exists($ruta) ) { 
        if( !
mkdir($ruta0775true) ){ return false; }
    }

    
$key_files=array_keys($file);
    
$numero_de_archivoscount($file[$key_files[0]]['name']);
    if (
$numero_de_archivos<1) {return 'No se ha cargado ningun archivo.';}
    if (
$numero_de_archivos>$max_archivos) {return 'Solo se pueden subir <b>'.$max_archivos.' archivos</b> a la vez.';}
    if ( !
is_array($file[$key_files[0]]['tmp_name']) ){return 'Se deben subir los archivos como un array.';}

    
$tmp_name$file[$key_files[0]]['tmp_name'];
    
$type$file[$key_files[0]]['type'];
    
$size$file[$key_files[0]]['size'];
    
$name$file[$key_files[0]]['name'];
    
$error$file[$key_files[0]]['error'];

    foreach (
$tmp_name as $k => $v) {
        if (!
is_uploaded_file($v)) {return '<br/>El archivo <b>'.$name[$k].'</b> ha dado error.';}
    }
    foreach (
$error as $k => $v) {
        if (
$v!==0) {return '<br/>El archivo <b>'.$name[$k].'</b> ha dado error.';}
    }
    foreach (
$type as $k => $v) {
        if (!
in_array($v$tipos_de_archivos)){return '<br/>El archivo <b>'.$name[$k].'</b> no esta permitido. Solo archivos JPG, JPEG, PNG.';}
    }
    foreach (
$size as $k => $v) {
        if (
$v>$max_size) {return '<br/>El archivo <b>'.$name[$k].'</b> supera el tama&ntilde;o permitido.';}
    }
    foreach (
$name as $k => $v) {
        
$extension end(explode('.'$v));
        
$nombre_final[$k]=$nombre.'-'.date('dmYHis').'-'.$k.'.'.$extension
    }
    
    foreach (
$tmp_name as $k => $v) {
        
$destino$ruta.$nombre_final[$k];
        if(!
move_uploaded_file($v$destino)){return '<br/>No se ha podido mover el archivo al servidor.';}
        
$n[]=$nombre_final[$k];
    }
return 
$n;
}
?>
Respecto a

Bien puedes modificarlo en el php.ini de forma global

O si solo es necesario para ese Script establecerlo de forma local con un .htaccess con las siguientes líneas

Cita:
php_value post_max_size 10M
php_value upload_max_filesize 10M
Puedes leer un artículo al respecto aquí
__________________
Unset($vida['malRollo']);

Última edición por xerifandtomas; 06/08/2016 a las 04:03

Etiquetas: linux, permisos, php+formularios, sftp, variable
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:27.