Foros del Web » Programando para Internet » PHP »

probleemas para leer un archivo (¿upload?)

Estas en el tema de probleemas para leer un archivo (¿upload?) en el foro de PHP en Foros del Web. Hola a Todos, estoy haciendo un sistema de altas automaticas, que usa un CSV, un txt. en ese txt tengo los usuarios que quiero dar ...
  #1 (permalink)  
Antiguo 25/04/2005, 10:19
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
probleemas para leer un archivo (¿upload?)

Hola a Todos,

estoy haciendo un sistema de altas automaticas, que usa un CSV, un txt.

en ese txt tengo los usuarios que quiero dar de alta con sus respectivos passwords, etc... en mi maquina funciona de maravillas, pero cuando lo subo al server me da el siguiente error;


Warning: fopen(C:\\Documents and Settings\\Liber Fernandez\\Escritorio\\usuarios.txt): failed to open stream: No such file or directory in /home/liber/public_html/cheqadmin.php on line 181

Warning: fgetcsv(): supplied argument is not a valid stream resource in /home/liber/public_html/cheqadmin.php on line 183

Warning: fclose(): supplied argument is not a valid stream resource in /home/liber/public_html/cheqadmin.php on line 271

Warning: Cannot modify header information - headers already sent by (output started at /home/liber/public_html/cheqadmin.php:181) in /home/liber/public_html/cheqadmin.php on line 277

Para obtener el archivo de las altas uso un campo fyle, por si sirve de algo se los digo, lo elijo y despues lo paso POST, a cheqadmin.php que da las altas.

Gracias

Liber
__________________
Liber
  #2 (permalink)  
Antiguo 25/04/2005, 12:24
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
vamos... alguna ayudita?
__________________
Liber
  #3 (permalink)  
Antiguo 25/04/2005, 16:02
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
estube probando varias cosas y sigo sin ninguna solucion, pense en talvez cambiar el \\ por \ pero no se como usar strreplace("\\","\"... pero no se como poner la \ sin que se me comente el codigo...
__________________
Liber
  #4 (permalink)  
Antiguo 25/04/2005, 16:06
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Como estas pasando el file?
Le estas poniendo el encrypte al formulario?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 25/04/2005, 16:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Será mejor que indiques el código completo que usas. Tanto tu formulario HTML (con su campo file en el y la definición de este) como de lado PHP (script) de proceso que haces o usas.

Un saludo,
  #6 (permalink)  
Antiguo 26/04/2005, 23:26
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
el codigo del input que paso por post es:

<input type="file" name="archivo" size="30">
__________________
Liber
  #7 (permalink)  
Antiguo 26/04/2005, 23:28
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
el codigo que esta en la pagina que recibe el post es el siguiente:

$archivo=$_POST['archivo'];
$fp = fopen($archivo,"r");
$row=0;
while ($data = fgetcsv ($fp, 1000, ",")){
//bla bla bla bla
}
fclose ($fp);
return $contador_no_altas;
__________________
Liber
  #8 (permalink)  
Antiguo 27/04/2005, 00:06
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
debes usar el superglobal $_FILE y no $_POST
Saludos cuidate
__________________
Dios dira que esto no es justo, pero lo sera...
  #9 (permalink)  
Antiguo 27/04/2005, 03:26
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por liberfg
el codigo que esta en la pagina que recibe el post es el siguiente:

$archivo=$_POST['archivo'];
$fp = fopen($archivo,"r");
$row=0;
while ($data = fgetcsv ($fp, 1000, ",")){
//bla bla bla bla
}
fclose ($fp);
return $contador_no_altas;
De hecho.. ahí no estás subiendo ningún archivo... por lo tanto al utilizar fopen() intentas abrir un archivo que no existe (ó aún no existe)...

Para subir archios necesitas de is_uploaded_file() y move_uploaded_file()... scripts encontrarás muchos en el foro... pero consulta la documentación oficial: http://www.php.net/manual/es/feature...ad.post-method

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 27/04/2005, 07:32
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
muchas gracias.. voy a hacer los cambios correspondientes... luego posteo los resultados.

Saludos.
__________________
Liber
  #11 (permalink)  
Antiguo 27/04/2005, 08:14
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Exclamación

Cita:
Iniciado por nicolaspar
Como estas pasando el file?
Le estas poniendo el encrypte al formulario?
A esto me decis:

<input type="file" name="archivo" size="30">


Yo te pregunto, si en el tag del formulario estas poniendo el encrypte:
<form enctype="multipart/form-data" name="..." ...>

Lo estas haciendo?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #12 (permalink)  
Antiguo 28/04/2005, 14:13
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
no, eso ultimo no lo estoy haciendo nicolaspar... es mas... no se ni de que se trata.
__________________
Liber
  #13 (permalink)  
Antiguo 28/04/2005, 14:22
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
usando $_FILES e vez de $_POST... tuve el mismo error
__________________
Liber
  #14 (permalink)  
Antiguo 28/04/2005, 18:12
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
Dime si sigues estos pasos:
+ El formulario, tal como dice nicolaspar tiene q ser algo así <form name="mi_formulario" action="tu_script.php" method="POST" enctype="multipart/form-data">
<input type="file" name="subir_archivo"> (esto te mostrará el boton de examinar para q los usuarios puedan seleccionar el archivo a subir).
+ Cuando subes un archivo PHP (tu_script.php) lo guarda en una carpeta temporal, así q debes usar tal como te lo dijo jam1138 move_uploaded_file() para guardarlo en alguna carpeta q tu quieras. Para poder hacer esto debes recibir el input file name="subir_archivo" con $_FILES["subir_archivo"];
+ Luego recién podrás usar el fopen(), al q obviamente, debes darle el mismo path donde guardaste el archivo q recién subiste.
Saludos cuidate
__________________
Dios dira que esto no es justo, pero lo sera...
  #15 (permalink)  
Antiguo 30/04/2005, 11:21
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
ok, entendidos todos los pasos a seguir, apenas tenga un rato, voy a implementarlos (me faltaban muchas cosas...) y luego posteo los resultados,

Muchas gracias

Saludos.
__________________
Liber
  #16 (permalink)  
Antiguo 03/05/2005, 15:45
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
hice todos los cambios pero ahora tengo este error,

Código PHP:
Warningmove_uploaded_file(): open_basedir restriction in effectFile(/public_html/www/p1.txtis not within the allowed path(s): (/home/liber/:/usr/lib/php:/usr/local/lib/php:/tmpin /home/liber/public_html/cheqadmin.php on line 186

Warning
fopen(): open_basedir restriction in effectFile(/www/archivos/p1.txtis not within the allowed path(s): (/home/liber/:/usr/lib/php:/usr/local/lib/php:/tmpin /home/liber/public_html/cheqadmin.php on line 193

Warning
fopen(/www/archivos/p1.txt): failed to open streamOperation not permitted in /home/liber/public_html/cheqadmin.php on line 193

Warning
fgetcsv(): supplied argument is not a valid stream resource in /home/liber/public_html/cheqadmin.php on line 195

Warning
fclose(): supplied argument is not a valid stream resource in /home/liber/public_html/cheqadmin.php on line 283

Warning
Cannot modify header information headers already sent by (output started at /home/liber/public_html/cheqadmin.php:182in /home/liber/public_html/cheqadmin.php on line 289 
he probado varios paths, el codigo que sube el archivo es este:

Código PHP:
$archivo $_FILES['archivo']['name']; 
    echo 
"Archivo Recibido:" .$archivo."<br>"
       
$dir $_FILES['archivo']['tmp_name']; 
    echo 
"Directorio temporal: ".$dir."<br>"
    if (
is_uploaded_file($_FILES['archivo']['tmp_name'])) { 
          
move_uploaded_file($_FILES['archivo']['tmp_name'], "/public_html/www/".$_FILES['archivo']['name']); 
    } else { 
           echo 
"Possible file upload attack. Filename: " $_FILES['archivo']['name'];
        exit; 
    }
    
//---------------------
    
$archivo="/www/archivos/".$_FILES['archivo']['name'];
    
$fp fopen($archivo,"r"); 
alguna idea?

Saludos y gracias
__________________
Liber
  #17 (permalink)  
Antiguo 03/05/2005, 16:08
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Eso es, o por que "/www/archivos/" no existe, o por que no tenes los permisos suficientes como para acceder a ese dir.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #18 (permalink)  
Antiguo 04/05/2005, 08:05
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
¿q forma se supone que debe tener el path? he probado con varios pero siempre tengo el mismo resultado...
__________________
Liber
  #19 (permalink)  
Antiguo 04/05/2005, 08:07
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Pone en el root un directorio llamado "archivos" (sin comillas), y dale permiso de escritura.
Despues, en el php en vez de usar "/www/archivos/" usa simplemente "archivos/" si es que dicho php esta en el mismo nivel, sino, en su defecto, subi o baja de nivel segun tu extructura de directorios.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #20 (permalink)  
Antiguo 04/05/2005, 08:32
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
listo, logre hacerlo, ahora funciona todo bien, tenia problemas con los permisos en la carpeta de upload, muchas gracias!
__________________
Liber
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 07:07.