Foros del Web » Programando para Internet » PHP »

¿Pueden Indicarme Que Tengo Mal Aqui?

Estas en el tema de ¿Pueden Indicarme Que Tengo Mal Aqui? en el foro de PHP en Foros del Web. Veran, tengo dos paginas, index.html y subida.php, en la primera tengo: index.html: <Body> <form name="FrmSubida" method="post" action="subida.php" enctype="multipart/form-data"> <input type="file" name="file1"> <input type="submit" value="Upload"> </form> ...
  #1 (permalink)  
Antiguo 24/10/2003, 10:10
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
¿Pueden Indicarme Que Tengo Mal Aqui?

Veran, tengo dos paginas, index.html y subida.php, en la primera tengo:

index.html:
<Body>
<form name="FrmSubida" method="post" action="subida.php" enctype="multipart/form-data">
<input type="file" name="file1">
<input type="submit" value="Upload">
</form>
</Body>

Y en la otra tengo:

<?copy("$file1", $_SERVER["DOCUMENT_ROOT"]."/");?>

¿Alguien Puede decirme si esta mal algo en la sintaxis?

Tengo Apache bajo Linux, y le di permisos de escritura al grupo apache en el directorio, sin embargo me sigue saliendo el siguiente warning:

Warning: Unable to open '' for reading: No such file or directory in /var/www/html/www.carlos.ex/subida.php on line 2

Y no me sube el fichero, bueno, espero que puedan ayudarme, gracias.
__________________
Charlie.
  #2 (permalink)  
Antiguo 24/10/2003, 10:26
 
Fecha de Ingreso: octubre-2003
Ubicación: Buenos Aires, Argentina
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
el php se compila en el servidor, a diferencia del HTML/JavaScript que se compila en la maquina del usuario

si vos pones para que te busque
C:\texto.txt
te va a buscar en
/var/www/html/www.carlos.ex/C:\texto.txt

habia una manera para subir archivos usando fsockets
es muy dificil de entender, yo solo pude subir una cosa una vez en mi vida y sin querer cambie el codigo y nunca supe como lo habia hecho :P

pero una cosa, aparte de al final subir el archivo, fijate de cambiarle el nombre, con cualkier funcion (podes usar move())

ahhh y busca en php.net y si entendes lo que dice, postealo aca
__________________
Saludos
Jeropa

Vamos todos a Codear
www.program-ar.com.ar
  #3 (permalink)  
Antiguo 24/10/2003, 10:28
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
No me resuelves nada amigo, ya se como funciona php, lo que no entiendo es por q no me lo sube. De todas formas gracias.
__________________
Charlie.
  #4 (permalink)  
Antiguo 24/10/2003, 10:47
 
Fecha de Ingreso: octubre-2003
Ubicación: Buenos Aires, Argentina
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
no te lo sube porque no encuentra el archivo que le especificaste

ya que al escribir
copy("C:\texto.txt", "/var/www/html/www.carlos.ex/");

el PHP piensa que hay un archivo dentro de
/var/www/html/www.carlos.ex/
llamado
C:\texto.txt

y esto pasa porque no especificastes un camino, el nombre del archivo, y esto pasa porque para especificar caminos en un computadora se utilizan las barras invertidas(\), diferencia de los archivos dentro de un FTP, que se utilizan las barras comunes (/)

sino fijate que dentro de un servidor podes tenes el archivo C:\texto.txt

entendiste??
__________________
Saludos
Jeropa

Vamos todos a Codear
www.program-ar.com.ar
  #5 (permalink)  
Antiguo 24/10/2003, 10:48
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 15 años, 4 meses
Puntos: 0
Saludos...

Aca te envio un dos archivos para subir archivos al servidor que funcionan muy bien:

index.php
Código PHP:
<html>
<
head>
<
title>Documento sin t&iacute;tulo</title>
<
meta http-equiv="" content="text/html; charset=iso-8859-1">
</
head>

<
body>
<
form enctype="multipart/form-data"  action="enviar_archivo.php" method="post">
<
input type="hidden" name="MAX_FILE_SIZE" value="50000">
<
input type="file" name="userfile"></td>
<
input type="submit" name="submit" value="Subir Archivo">
</
form>
</
body>
</
html
enviar_archivo.php
Código PHP:
<?php
// Directorio donde se almacenan las imagenes
  
$dir "/imagenes/";

// Verificación de que sea una imagen
  
$ext explode('.',$userfile_name);
  
$ext strtolower($ext[count($ext)-1]);
  if(
preg_match('/^(gif|png|jpe?g|bmp)$/',$ext)){
    
// Copiar archivo al servidor
      
copy($userfile,$dir.$userfile_name);
      
    
// Verifico que se haya copiado el archivo
      
if(!is_uploaded_file($userfile)){
        echo 
"El archivo <b>$userfile_name</b> no pudo ser copiado!!";
      }
      if(
is_uploaded_file($userfile)){
        echo 
"El archivo ha sido copiado con éxito.";
      }
  }
  else{
    echo 
"El archivo no es una imagen.";
  }
?>
Revisalos a ver si te sirven...

  #6 (permalink)  
Antiguo 24/10/2003, 11:26
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
Nada, no me rula, el script esta bien, como el mio, seguramente que desde windows me funciona, pero con Linux no, tengo la Red Hat 9, y el apache es:httpd-2.0.40-21.5

Bueno, haber si alguien q trabaje con Linux puede decirme por que puede ser. Lo probe desde localhost y con otro equipo, y en los dos nos da el mismo warning (Ver arriba).
__________________
Charlie.
  #7 (permalink)  
Antiguo 24/10/2003, 11:30
Avatar de alexa10  
Fecha de Ingreso: julio-2002
Ubicación: De este lado...
Mensajes: 293
Antigüedad: 15 años, 4 meses
Puntos: 0
Una vez tuve un problema asi , y lo resolví dandole permisos a todos para escribir en ese directorio:

Código PHP:
chmod ugo+w nombre_directorio 
  #8 (permalink)  
Antiguo 24/10/2003, 11:42
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.427
Antigüedad: 14 años, 6 meses
Puntos: 7
Si, ya me fije en eso tb, tiene perimisos root y el gurpo apache, tienen tanto de escritura como de lectura, de ejecucion no se los doy ni de coña, pero asi ya deberia tirar, por permisos no es, a no ser q haya q hacer algo en el httpd.conf
__________________
Charlie.
  #9 (permalink)  
Antiguo 24/10/2003, 12:22
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 7 meses
Puntos: 1
hola,

el problema quizas viene que estas usando el escript con las registers_globals en on y quizas estan en off

tambien la funcion copy() ya esta bastante desfasada es mejor
usar la funcion move_uploaded_file()

Tambien no es demasiado recomendable proteger el tamaño maximo del archivo solo en el formulario pues cualquier puede guardar la pagina en el pc y cambiar el formulario, permitiendo subir lo que quiera hasta que el php.ini lo permita por eso es mejor protegerlo en el servidor con el array $_FILES;

Te dejo este modelo de codigo para que lo pruebes quizas solucionas el problema




Código PHP:
$dir_htms=$_SERVER['DOCUMENT_ROOT'];
 
$directorio =$dir_htms."/userfiles/";
if(
$_FILES['userfile']['size'] > 50000) exit("<li> archivo demasiado grande");

 if (!
move_uploaded_file($_FILES['userfile']['tmp_name',$directorio  ,  $_FILES['userfile']['name'])) 
   exit(
"no se ha podido subir el archivo");
   else echo 
"<li> correcto se ha subido el archivo"
un salduo
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 01:15.