Foros del Web » Programando para Internet » PHP »

Ficheros (Básico)

Estas en el tema de Ficheros (Básico) en el foro de PHP en Foros del Web. Hola, Intento creer un fichero en mi sitio y escribir en él : Código: <?php #Abrimos el fichero en modo de escritura $DescriptorFichero = fopen("fichero_prueba.txt","w"); ...
  #1 (permalink)  
Antiguo 27/05/2010, 08:30
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 20 años, 2 meses
Puntos: 0
Ficheros (Básico)

Hola,

Intento creer un fichero en mi sitio y escribir en él :

Código:
  <?php
	#Abrimos el fichero en modo de escritura 
	$DescriptorFichero = fopen("fichero_prueba.txt","w"); 
	
	#Escribimos la primera línea dentro de él 
	$string1 = "Esta es la primera línea de texto"; 
	fputs($DescriptorFichero,$string1); 
	
	#Escribimos la segunda línea de texto 
	$string2 = "Y esta es la segunda línea de texto	"; 
	fputs($DescriptorFichero,$string2); 
	
	#Cerramos el fichero 
	fclose($DescriptorFichero); 
  ?>
Aclaro que estoy empezando en esto del PHP y la respuesta a las preguntas que hago probablemente sera obvia, aunque no consigo encontrarla. Según el manual debería haber un fichero de nombre "fichero_prueba.txt" en la raiz de mi sitio, pero no lo encuentro por ninguna parte. Si ha funcionado ¿ Donde está ? y si no funciona ¿ Por qué ? ¿ Hay que dar algún nombre especial a los ficheros ?. Si se produce algún error ¿ Cómo puedo hacer que salga un mensaje diciendo lo que ha pasado ?
  #2 (permalink)  
Antiguo 27/05/2010, 08:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Ficheros (Básico)

Si tu no especificas la ruta, el archivo se crea en el mismo directorio donde estas ejecutando el archivo PHP.

Tu puedes especificar la ruta en el comando fopen:
Código PHP:
Ver original
  1. // win
  2. $fh = fopen('C:\Archivos\texto.txt', 'w');
  3. // *nix
  4. $fh = fopen('/path/archivo.txt', 'w');

Saludos.
  #3 (permalink)  
Antiguo 27/05/2010, 08:56
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ficheros (Básico)

Gracias por la respuesta GatorV, pero según dices debería tener un fichero en el directorio raiz de mis sitio (donde está el fichero PHP que ejecuto) de nombre "fichero_prueba.txt" que no encuentro.
  #4 (permalink)  
Antiguo 27/05/2010, 09:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Ficheros (Básico)

Revisa que tengas permisos en la carpeta donde quieres escribir, y prueba un código así:
Código PHP:
Ver original
  1. $DescriptorFichero = fopen("fichero_prueba.txt","w") or die("no se pudo abrir el archivo);

Saludos.
  #5 (permalink)  
Antiguo 27/05/2010, 09:16
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ficheros (Básico)

Aparentemente es lo mismo, ni veo el fichero creado ni un mensaje de error.
¿ Donde se miran los pemisos de escritura ?
  #6 (permalink)  
Antiguo 27/05/2010, 09:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Ficheros (Básico)

En tu sistema operativo puedes ver los permisos de la carpeta.

Saludos.
  #7 (permalink)  
Antiguo 27/05/2010, 09:32
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ficheros (Básico)

El script lo pruebo subiendolo a mi servidor (es decir lo ejecuto desde la raiz de mi sitio o eso creo). ¿ Donde miro los permisos ?
  #8 (permalink)  
Antiguo 27/05/2010, 09:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 87
Antigüedad: 17 años, 1 mes
Puntos: 1
Respuesta: Ficheros (Básico)

no he usado nunca fopen pero, no es para ABRIR un archivo teoricamente ya creado? y si no esta creado, no lo puede abrir? segun lo que leo en la pagina es.php.net ....
"fopen — Abre un archivo o URL"

?? no se, ya os digo que no he usado nunca fopen :P
  #9 (permalink)  
Antiguo 27/05/2010, 09:50
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ficheros (Básico)

Xlokyx, he probado a crear el fichero y subirlo al servidor antes de ejecutar, pero no ha escrito nada en él ni dado señales de vida por ninguna parte. Además en el manual que he leido decía que si el fichero no existe se crea.
  #10 (permalink)  
Antiguo 27/05/2010, 13:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Ficheros (Básico)

Si es en tu servidor lo puedes ver con el cliente FTP.

Saludos.
  #11 (permalink)  
Antiguo 28/05/2010, 04:22
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ficheros (Básico)

Hola,

Tras preguntar a mi alojamiento me dicen que "por motivos de seguridad y estabilidad no está permitido el uso de esta directiva FOpen, por lo que deberá utilizar una alternativa, como serían la función CURL, con la que obtendrá el mismo resultado". Además han desactivado el Safe_mode del dominio.
He mirado el manual de CURL http://es.php.net/manual/en/book.curl.php

y he probado lo siguiente :
Código:
<?php
	$ch = curl_init("http://www.google.es");
	$fp = fopen("fichero.txt", "w");
	
	curl_setopt($ch, CURLOPT_FILE, $fp);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	
	curl_exec($ch);
	curl_close($ch);
	fclose($fp);
?>
Este código funciona parcialmente en el sentido de que muestra el contenido de texto de la URL leida en pantalla, pero creo que debería crear un fichero de nombre "fichero.txt" en la raiz de mi sitio que es justo lo que quiero hacer.
¿ Que falla ?
  #12 (permalink)  
Antiguo 28/05/2010, 05:21
 
Fecha de Ingreso: noviembre-2006
Ubicación: Barcelona, España
Mensajes: 30
Antigüedad: 18 años
Puntos: 0
Respuesta: Ficheros (Básico)

Yo diría que te falta el fflush($file) para confirmar lo que le estas metiendo en el fichero :). Como en C que si te lo dejas no escribe~

Edit: he provado tu codigo añadiendole el fflush al final y me va, un poco desordenado pero me escribe en el fichero ^///^
  #13 (permalink)  
Antiguo 28/05/2010, 05:36
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ficheros (Básico)

Pues con fflush($file) tampoco va, supongo que he hecho algo mal porque no encuentro el fichero. E código que ejecuto es :


Código:
<?php
	$ch = curl_init("http://www.google.es");
	$fp = fopen("fichero.txt", "w");
	
	curl_setopt($ch, CURLOPT_FILE, $fp);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	
	curl_exec($ch);
	
	fflush($file);
	
	curl_close($ch);
	fclose($fp);
?>
  #14 (permalink)  
Antiguo 28/05/2010, 05:39
 
Fecha de Ingreso: noviembre-2006
Ubicación: Barcelona, España
Mensajes: 30
Antigüedad: 18 años
Puntos: 0
Respuesta: Ficheros (Básico)

Cita:
Iniciado por ylodis Ver Mensaje
Pues con fflush($file) tampoco va, supongo que he hecho algo mal porque no encuentro el fichero. E código que ejecuto es :


Código:
<?php
	$ch = curl_init("http://www.google.es");
	$fp = fopen("fichero.txt", "w");
	
	curl_setopt($ch, CURLOPT_FILE, $fp);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	
	curl_exec($ch);
	
	fflush($file); ---> tu fichero se llama $fp!!, sería fflush($fp)
	
	curl_close($ch);
	fclose($fp);
?>
  #15 (permalink)  
Antiguo 28/05/2010, 05:45
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Ficheros (Básico)

Gracias Edochan, pero sigue sin funcionar. No encuentro el fichero y el texto visible sigue apreciendo en pantalla.
  #16 (permalink)  
Antiguo 28/05/2010, 09:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Ficheros (Básico)

Si te dicen que fopen esta desactivado, ni con curl vas a poder crear el archivo. Yo me cambiaria de hosting a uno que tenga esas opciones activadas.

Etiquetas: ficheros
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 17:25.