PHP - Leer fichero pasado como variable

 
Vista:

Leer fichero pasado como variable

Publicado por Antonio (4 intervenciones) el 22/02/2010 13:51:24
Hola,

Tengo un problema leyendo ficheros.
Tengo una función que me devuelve un path leído de un fichero, y seguidamente intento abrir ese fichero y no abre.

La función devuelve: doc/introduccion
y se lo asigno a una variable llamada $var.

el error que genera es el siguiente:
Warning: fopen(doc/introduccion ) [function.fopen]: failed to open stream: Invalid argument in ... on line 44

La línea 44 contiene: $DescriptorFichero = fopen($var,"r");

Sin embargo si pongo: $var ="doc/introduccion";
todo funciona correctamente.

Agradecería cualquier ayuda!.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Leer fichero pasado como variable

Publicado por Diego Romero (1450 intervenciones) el 23/02/2010 04:36:47
Debes tener en cuenta que fopen() trata de abrir el archivo que tiene el nombre EXACTAMENTE igual al que le pasas como parámetro. De modo tal que si $var que toma valor desde un archivo arrastra algún espacio en blanco o un retorno de carro, esos caracteres formarán parte del nombre de archivo que fopen trata de abrir. Sugiero que verifiques que lo que estás leyendo desde el archivo sea lo que pretendes que sea y nada más.

Cosas que puedes probar.

$var = trim($var); // quita espacios y retornos de carro
$fh = fopen($var,"r");

if (is_file($var)) { $fh = fopen($var,"r"); ... y resto del código ... }
else {
echo $var.": nombre de archivo inválido o archivo no existe.";
}

Otra cosa más. Cualquier acceso a archivos locales al servidor desde PHP (incluyendo la función fopen()) cumplen con las reglas del sistema operativo en el cual se ejecuta PHP. En Windows "estearchivo.txt" es el mismo archivo que "EsTeArChIvO.tXt" pero en Unix "estearchivo.txt" no es el mismo archivo que "EsTeArChIvO.tXt". Además debes tener en cuenta relativo a qué se refiere el path que estás indicando. En tu caso "doc/introduccion" se refiere a un archivo que está en el directorio "doc" y "doc" está en el mismo directorio desde donde estás ejecutando fopen().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar