Foros del Web » Programando para Internet » PHP »

Subir archivos a subdirectorio con php

Estas en el tema de Subir archivos a subdirectorio con php en el foro de PHP en Foros del Web. Hola. Estoy teniendo problemas al intentar subir archivos mediante php a un servidor remoto. Para aclarar, tengo la siguiente estructura: raiz | |----dir_form--- formulario.php | ...
  #1 (permalink)  
Antiguo 16/10/2010, 17:04
 
Fecha de Ingreso: agosto-2007
Mensajes: 9
Antigüedad: 17 años, 4 meses
Puntos: 0
Pregunta Subir archivos a subdirectorio con php

Hola.
Estoy teniendo problemas al intentar subir archivos mediante php a un servidor remoto. Para aclarar, tengo la siguiente estructura:

raiz
|
|----dir_form--- formulario.php
|
|---imagenes---subdirectorio

Lo que intento hacer es subir un archivo a /raiz/imagenes/subdirectorio con el script en formulario.php

Les dejo el código:

Código PHP:
<?php

      $status 
"";
        if (
$_POST["action"] == "upload") {

          
// obtenemos los datos del archivo

          
$tamano $_FILES["archivo"]['size'];

          
$tipo $_FILES["archivo"]['type'];

          
$archivo $_FILES["archivo"]['name'];
  
          
$prefijo substr(md5(uniqid(rand())),0,6);

          if (
$archivo != "") {

              
// guardamos el archivo a la carpeta files

              
$destino =  "../imagenes/subdirectorio/".$prefijo."_".$archivo;
              if (
copy($_FILES['archivo']['tmp_name'],$destino)) {

                  
$status "Archivo subido: <b>".$archivo."</b>";

              } else {

                  
$status "Error al subir el archivo";

             }

          } else {

              
$status "Error al subir archivo";

          }

      }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
    <?php echo $status ?>
      <form action="upload.php" method="post" enctype="multipart/form-data">
        <input name="archivo" type="file" size="35" />
        <input name="enviar" type="submit" value="Upload File" />
        <input name="action" type="hidden" value="upload" />
      </form>
</body>
</html>
Tengo los permisos en 777, tanto para imagenes como para subdirectorio. Cuando cambio:
Código PHP:
 $destino =  "../imagenes/subdirectorio/".$prefijo."_".$archivo
por:
Código PHP:
 $destino =  "../imagenes/".$prefijo."_".$archivo
Sube el archivo sin problemas al directorio imagenes.
Cualquier ayuda se agradece!

Última edición por pacawaca; 16/10/2010 a las 17:08 Razón: Error de presentación
  #2 (permalink)  
Antiguo 16/10/2010, 18:44
Avatar de CazaresLuis  
Fecha de Ingreso: septiembre-2010
Ubicación: Distrito Federal
Mensajes: 67
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Subir archivos a subdirectorio con php

Cita:
Iniciado por pacawaca Ver Mensaje
Hola.
Estoy teniendo problemas al intentar subir archivos mediante php a un servidor remoto. Para aclarar, tengo la siguiente estructura:

raiz
|
|----dir_form--- formulario.php
|
|---imagenes---subdirectorio

Lo que intento hacer es subir un archivo a /raiz/imagenes/subdirectorio con el script en formulario.php

Les dejo el código:

Código PHP:
<?php

      $status 
"";
        if (
$_POST["action"] == "upload") {

          
// obtenemos los datos del archivo

          
$tamano $_FILES["archivo"]['size'];

          
$tipo $_FILES["archivo"]['type'];

          
$archivo $_FILES["archivo"]['name'];
  
          
$prefijo substr(md5(uniqid(rand())),0,6);

          if (
$archivo != "") {

              
// guardamos el archivo a la carpeta files

              
$destino =  "../imagenes/subdirectorio/".$prefijo."_".$archivo;
              if (
copy($_FILES['archivo']['tmp_name'],$destino)) {

                  
$status "Archivo subido: <b>".$archivo."</b>";

              } else {

                  
$status "Error al subir el archivo";

             }

          } else {

              
$status "Error al subir archivo";

          }

      }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
    <?php echo $status ?>
      <form action="upload.php" method="post" enctype="multipart/form-data">
        <input name="archivo" type="file" size="35" />
        <input name="enviar" type="submit" value="Upload File" />
        <input name="action" type="hidden" value="upload" />
      </form>
</body>
</html>
Tengo los permisos en 777, tanto para imagenes como para subdirectorio. Cuando cambio:
Código PHP:
 $destino =  "../imagenes/subdirectorio/".$prefijo."_".$archivo
por:
Código PHP:
 $destino =  "../imagenes/".$prefijo."_".$archivo
Sube el archivo sin problemas al directorio imagenes.
Cualquier ayuda se agradece!
Hola yo lo que hago cuendo me sucede esto, elimino la carpeta y creo una nueva con otro nombre y le cambio los permisos, tal vez no sea una solución pero bueno no esta por demas comentarlo.

La otra es, te marca algún error?

Saludos
  #3 (permalink)  
Antiguo 16/10/2010, 20:21
 
Fecha de Ingreso: agosto-2007
Mensajes: 9
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Subir archivos a subdirectorio con php

Cita:
La otra es, te marca algún error?
Nope. Sin errores. En realidad creo dinámicamente el directorio, seteo el permiso y grabo archivos ahí (intento hacerlo en realidad). Como no me estaba funcionando hice la prueba con este script, pero sin resultados también.
Por si alguien pregunta, en el servidor tengo las alertas activadas, o sea, no es que no se muestren por un tema de configuración del servidor.
Qué estoy haciendo mal???

Última edición por pacawaca; 16/10/2010 a las 20:22 Razón: Olvidé la cita
  #4 (permalink)  
Antiguo 16/10/2010, 20:27
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: Subir archivos a subdirectorio con php

Usa move_uploaded_file en vez de copy.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 16/10/2010, 20:40
 
Fecha de Ingreso: agosto-2007
Mensajes: 9
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Subir archivos a subdirectorio con php

Cita:
Iniciado por spider_boy Ver Mensaje
Usa [url=http://cl.php.net/manual/es/function.move-uploaded-file.php]move_uploaded_file[/url] en vez de copy.
Bueno. Usando move_uploaded_file me aparece esto:

SAFE MODE Restriction in effect. The script whose uid is 10038 is not allowed to access (aca va a direccion) owned by uid 48.
  #6 (permalink)  
Antiguo 16/10/2010, 21:23
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 21 años
Puntos: 89
Respuesta: Subir archivos a subdirectorio con php

Bueno, busqué en php.net, y me tiró a esta página : http://php.net/manual/en/features.safe-mode.php , lo que me da a entender que tienes la directiva safe_mode en On. Así que solo debes ir a php.ini y dejar esa directiva en Off.

Haz aquello, y nos comentas.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 17/10/2010, 09:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 9
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Subir archivos a subdirectorio con php

Es cierto, tengo que deshabilitar safe_mode para que funcione sin problemas. Lo que sucede es que estoy hosteando mi sitio en un servidor compartido, y no tengo acceso al php.ini...
Creo que lo más sano va a ser que cambie la lógica del programa para que guarde las los archivos en un directorio fijo, con el mismo userid que el del script.
Lo que ocurre es que mi script genera los directorios con el userid 48, y el userid del script es 10038. Al intentar acceder a ese directorio me da error.
¿Puede haber alguna forma de cambiar el userid del script con SSH?
¿Podrán creer que no puedo acceder al servidor con SSH? Me estoy dando cuenta de que es hora de migrar mi sitio a otro...
Parece que en la versión 6 no existe más safe_mode, al menos eso leí por ahí.

Etiquetas: subdirectorio, subir
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 03:01.