Foros del Web » Programando para Internet » PHP »

subir archivos sin acceso a /tmp

Estas en el tema de subir archivos sin acceso a /tmp en el foro de PHP en Foros del Web. Hola: Me interesa un código para subir imagenes via una forma HTML, pero tengo un problema: en mi servicio de hosting no tengo acceso (permiso ...
  #1 (permalink)  
Antiguo 10/12/2003, 13:39
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 16 años, 4 meses
Puntos: 0
subir archivos sin acceso a /tmp

Hola:

Me interesa un código para subir imagenes via una forma HTML, pero tengo un problema:

en mi servicio de hosting no tengo acceso (permiso de escritura) al directorio TMP, y tampoco acceso a PHP.ini para cambiar el directorio donde se subiran las imagenes.

Hay algun modo de subir imágenes directamente a otro directorio?

gracias
  #2 (permalink)  
Antiguo 10/12/2003, 14:05
 
Fecha de Ingreso: noviembre-2003
Ubicación: (LF).Santiago - Chile
Mensajes: 69
Antigüedad: 14 años
Puntos: 0
upimg.php
Código PHP:
<?
if(!isset($HTTP_GET_VARS["upload"]))
{
   if(
$stat=="Ok"){ echo "IMAGEN AGREGADA";} 
?>
     <form method="post" action="upimg.php?upload=1"  enctype="multipart/form-data">
     IMAGEN<input type="file" name="nombre">
     <input type="submit" value="Subir Imagen" name="submit">
     </form>
<?
     
}else{
          
$dir "../imagenes/"//tu colocas q directorio quieres
          
$nfile=$img.".jpg";
          
$userfile=$nombre_name;
          if(
copy($nombre$dir.$nfile)){
               
header ("Location: upimg.php?stat=Ok");
          }else{
               echo 
"error al copiar";
          }
     }
?>
no te preocupes por el directorio TMP, cambia la variable $dir a tu gusto, y en nfile puedes cambiar la extensión, esto es lo q necesitas...Salu2
  #3 (permalink)  
Antiguo 10/12/2003, 16:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si usas move_uploaded_file() en lugar de copy() tendrás menos problemas de permisos al mover los archivos que por defecto PHP sube al directorio /tmp (o al que tenga configurado como upload_tmp_dir en su php.ini .. que se puede ver con phpinfo() también ..)

Y si se usan los arrays superglobales $_FILES (si usas PHP 4.1.0 en adelante .. ) mejor todavía.

Más info en:
http://www.php.net/manual/en/features.file-upload.php


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 10/12/2003, 20:12
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 16 años, 4 meses
Puntos: 0
Se supone que copy o move_uploaded_file, copian el archivo desde una instancia temporal en el archivo tmp, para el cual necesito permiso de escritura, ese es el problema.

Asi es mi arbol de directorios: en el directorio base tengo dos subdirectorios: 'Administracion' e 'Imagenes', en 'Administracion tengo la pagina con la forma y el codigo, se llama 'administracion2.php' por eso creo las variables $newimage y $nipath. El codigo, que sigue sin funcionar es este:

Código:
if (isset ($addplanta)) {
			
		$newimage = sprintf ("Imagenes/%s", $upimagen_name);
		$nipath = sprintf ("../%s", $newimage);
		move_uploaded_file($upimagen, $nipath);
		
		
		
		mysql_select_db($database_gconn, $gconn);
		$sql = "INSERT INTO plantas (picplanta) VALUES ('$newimage')";
		$result = mysql_query($sql);
		
	}
y la forma:

Código:
<form action="<?php echo$PHP_SELF  ?>" method="post" enctype="multipart/form-data" name="plantaform2" id="plantaform2">
   
Imagen: 
          <input name="upimagen" type="file" >
          <input name="addplanta" type="submit" id="addplanta" value="Registrar nueva planta"> 
</form>
  #5 (permalink)  
Antiguo 10/12/2003, 20:14
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 16 años, 4 meses
Puntos: 0
Ah! y este es el error que envia:

Warning: Unable to create '../Imagenes/angelito.gif': Permission denied in /usr91/home/g/l/gloria20/public_html/Administracion/administracion2.php on line 11

Warning: Unable to move '/var/tmp/phpevzRvy' to '../Imagenes/angelito.gif' in /usr91/home/g/l/gloria20/public_html/Administracion/administracion2.php on line 11
  #6 (permalink)  
Antiguo 10/12/2003, 20:51
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 16 años, 4 meses
Puntos: 0
platicando con el departamento de soporte de mi compañia de hosting me di cuenta que el problema no era el permiso de escritura del directorio tmp, sino de mi directorio /imagenes.

Ya que lo habilitaron funcionó.

Gracias

Última edición por GhostRider; 10/12/2003 a las 20:52
  #7 (permalink)  
Antiguo 11/12/2003, 06:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El move_uploaded_file() tiene ventajas sobre el copy() .. sobretodo si se tabaja en ambientes con "SAFE MODE" a ON (modo seguro).

Pero .. hasta que no pusistes el error concreto que tenias .. como verás no se te pudo dar ninguna solución (pues tu mismo creias que era del /tmp permiso ..). Para otra ocasión .. pon el código que uses y los mensajes de error que dé PHP al respecto.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 29/12/2003, 07:42
 
Fecha de Ingreso: diciembre-2003
Ubicación: Quillota
Mensajes: 196
Antigüedad: 14 años
Puntos: 0
tengo el mismo error, pero yo aun no puedo solucionarlo, a diferencia de ghostrider, yo no puedo, realmente no le entendi bien como soluciono el problema. Yo en mi casa puedo hacer que funcione pero cuando estoy en otro hosting no pueod y me da el erro del permiso, aqui el error

Warning: Unable to create 'images/291203093859.jpg': Permission denied in /home/webdae/admnoticias.php on line 28

Warning: Unable to move '/tmp/phpmSJbLk' to 'images/291203093859.jpg' in /home/webdae/admnoticias.php on line 28

y aqui el codigo
Código PHP:
<? $archivo_nom $_FILES['archivo']['name'];
 
$archivo_nom $_FILES['archivo']['name'];
      
$nombre_aux=substr($archivo_nom,-4);    
      
$nuevo_nombre=date("d").date("m").date("y").date("H").date("i").date("s").$nombre_aux
      echo 
$_FILES['archivo']['tmp_name'];

      if (
move_uploaded_file($_FILES['archivo']['tmp_name'],"images/".$nuevo_nombre)) 
       {
        echo 
"Se ha transferido el archivo $arch<br>";
        echo 
"<br>Su tamaño es: $archivo_size bytes<br>";
        echo 
"<br>El fichero es tipo: $archivo_type <br>";
       }
       else
              {
             echo 
"No ha podido transferirse el fichero";
             echo 
"Error interno del servidor.";
            }
  #9 (permalink)  
Antiguo 29/12/2003, 07:47
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Los parametros de move_uploaded_file() deben ser rutas. Puede que en tu caso no entienda 'images/' como una ruta valida. Prueba poniendo './images/' o poniendo el path absoluto (en este caso '/home/webdae/images').

Doy por supuesto que images existe y que el usuario PHP (o apache) tiene permisos para crear ficheros en el.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 29/12/2003, 07:56
 
Fecha de Ingreso: diciembre-2003
Ubicación: Quillota
Mensajes: 196
Antigüedad: 14 años
Puntos: 0
Bueno lo probe sin subirlo al directorio imagen pero me salio el mismo error
Warning: Unable to create '291203095416.jpg': Permission denied in /home/webdae/admnoticias.php on line 28

Warning: Unable to move '/tmp/phpEQA6Wl' to '291203095416.jpg' in /home/webdae/admnoticias.php on line 28
con el y cambe en el codigo
Código PHP:
if (move_uploaded_file($_FILES['archivo']['tmp_name'],$nuevo_nombre)) 
  #11 (permalink)  
Antiguo 29/12/2003, 08:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tienes que darle permisos de escritura al directorio donde subas tus imagenes .. concretamente .. en el error te dice la ruta absoluta y directorio que no tiene dichos permisos de escritura

/home/webdae/

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 29/12/2003, 08:42
 
Fecha de Ingreso: diciembre-2003
Ubicación: Quillota
Mensajes: 196
Antigüedad: 14 años
Puntos: 0
gracias, y la pregunta del ignorante com le doy permiso especificamente a la carpeta images que esta en webdae?? gracias
  #13 (permalink)  
Antiguo 29/12/2003, 09:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Con tu cliente FTP .. usando la funcionalidad del CHMOD

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 16:28.