Foros del Web » Programando para Internet » PHP »

CURL. Grabar fichero

Estas en el tema de CURL. Grabar fichero en el foro de PHP en Foros del Web. Hola, Intento leer el contenido visible de una web y volcarlo a un fichero, pero sólo lo graba en pantalla, mientras que el archivo ni ...
  #1 (permalink)  
Antiguo 31/05/2010, 04:19
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 meses
Puntos: 0
CURL. Grabar fichero

Hola,

Intento leer el contenido visible de una web y volcarlo a un fichero, pero sólo lo graba en pantalla, mientras que el archivo ni se crea si no existe ni se modifica en caso de exisitir. El código es :

Código:
<html>
  <head>
    <title>Titulo
    </title>
  </head>
  <body>  
	<?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);
		
		fwrite($fp,'hkjhlkjhlk');
		
		curl_exec($ch);
		
		fflush($fp); 
		
		curl_close($ch);
		fclose($fp);
	?>
  </body>
</html>
  #2 (permalink)  
Antiguo 31/05/2010, 04:31
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: CURL. Grabar fichero

Mira este ejemplo http://www.forosdelweb.com/3054644-post6.html
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 31/05/2010, 04:49
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: CURL. Grabar fichero

Lo que busco es más sencillo aún. La URL a descargar no está protegida, no hay cookies de por medio y no descargo a mi disco duro, sino que intento volcar el contenido visible de una web (en mi ejemplo www.google.com) a un fichero de texto residente en el directorio raiz de mi alojamiento. Como he dicho si el fichero no existe debería crearlo (no lo hace) y si existe modificarlo (tampoco).
  #4 (permalink)  
Antiguo 31/05/2010, 05:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: CURL. Grabar fichero

Ok, pero ahí tienes el ejemplo. Solo quita lo que no necesites y nos dejas saber como te va.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 31/05/2010, 05:36
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: CURL. Grabar fichero

Hola,

Creo que he eliminado el código sobrante, pero en la ejecución no ha hecho aparentemente nada. Veo el texto visible de www.google.es en pantalla pero el fichero "fichero.txt" que existía en el directorio raiz de mi alojamiento sigue igual (no lo ha cambiado, sigue vacio como cuando lo cree).
Agradeceré cualquie ayuda.

Código utilizado :

Código:
<html>
  <head>
    <title>Titulo
    </title>
  </head>
  <body>  
	<?php
		$url = 'http://www.google.es/';
		$save_to='fichero.txt';
		 
		$g=$save_to.basename($url);
		echo $g;
		$ch=curl_init($url);
		$fp=fopen ($g, "w");
		curl_setopt ($ch, CURLOPT_FILE, $fp);
		curl_setopt ($ch, CURLOPT_HEADER ,0);
		curl_exec ($ch);
		curl_close ($ch);
		fclose($fp); 
	?>
  </body>
</html>
  #6 (permalink)  
Antiguo 31/05/2010, 05:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: CURL. Grabar fichero

Mira bien la dirección, debes indicar en tu caso la ruta absoluta donde se encuentra el archivo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 31/05/2010, 05:54
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: CURL. Grabar fichero

¿ Como puedo decirle al sistema que grabe en el directorio raiz de mi sitio ?
  #8 (permalink)  
Antiguo 31/05/2010, 06:40
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: CURL. Grabar fichero

Hola de nuevo.


He probado a cambiar la linea donde le digo donde quiero que grabe y la he puesto como :

Código:
$save_to='ruta-absoluta-a-la-raiz-de-mi-sitio/fichero.txt';
pero sigo igual. Lo unico que ha cambiado es que ahora encima del contenido de texto visible en www.google.es puede verse una linea que dice:

ruta-absoluta-a-la-raiz-de-mi-sitio/fichero.txtwww.google.es

Agradecería cualquier ayuda en las siguientes formas :

1) Un codigo PHP-CURL que abra una URL y grabe un fichero de texto con su contenido (en pantalla ya lo veo, pero necesito que grabe).

2) Alguna variable del sistema que me dé pistas de que puede pasar, que me diga por ejemplo si graba, donde lo hace y si no graba porque.

3) Dado que no me fio mucho de mi alojamiento, que permisos son necesarios para grabar un fichero. (CURL está permitido porque veo en pantalla el contenido de www.google.es), o bien que puede fallar en mi alojamiento para que no funcionen ni los ejemplos más básicos del manual.
  #9 (permalink)  
Antiguo 31/05/2010, 09:01
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: CURL. Grabar fichero

¿ Alguien conoce los requisitos necesarios para que CURL grabe un fichero de texto en la raiz de un sitio ?
  #10 (permalink)  
Antiguo 31/05/2010, 11:19
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: CURL. Grabar fichero

Cita:
Iniciado por ylodis Ver Mensaje
¿ Alguien conoce los requisitos necesarios para que CURL grabe un fichero de texto en la raiz de un sitio ?
A mi me lo guarda

$save_to='C:\AppServ\www\00-laboratorio_test\secciones\CURL\fichero.txt'

Genera el siguiente fichero fichero.txtwww.google.es


Código:
<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Google</title><script>window.google={kEI:"D-8DTNOHAYSQjAe6yvWyCw",kEXPI:"24660,24803,24938,25047",kCSI:{e:"24660,24803,24938,25047",ei:"D-8DTNOHAYSQjAe6yvWyCw",expi:"24660,24803,24938,25047"},ml:function(){},kHL:"es",time:function(){return(new Date).getTime()},log:function(b,d,c){var a=new Image,e=google,g=e.lc,f=e.li;a.onerror=(a.onload=(a.onabort=function(){delete g[f]}));g[f]=a;c=c||"/gen_204?atyp=i&ct="+b+"&cad="+d+"&zx="+google.time();a.src=c;e.li=f+1},lc:[],li:0,Toolbelt:{}};
window.google.sn="webhp";window.google.timers={load:{t:{start:(new Date).getTime()}}};try{}catch(u){}window.google.jsrt_kill=1;
var _gjwl=location;function _gjuc(){var e=_gjwl.href.indexOf("#");if(e>=0){var a=_gjwl.href.substring(e);if(a.indexOf("&q=")>0||a.indexOf("#q=")>=0){a=a.substring(1);if(a.indexOf("#")==-1){for(var c=0;c<a.length;){var d=c;if(a.charAt(d)=="&")++d;var b=a.indexOf("&",d);if(b==-1)b=a.length;var f=a.substring(d,b);if(f.indexOf("fp=")==0){a=a.substring(0,c)+a.substring(b,a.length);b=c}else if(f=="cad=h")return 0;c=b}_gjwl.href="/search?"+a+"&cad=h";return 1}}}return 0}function _gjp()

... corto
Deberías verificar que tengas permisos de escritura en el directorio. Prueba crear un fichero vacío a través de un script a ver si tampoco te lo crea.

Saludos!
  #11 (permalink)  
Antiguo 01/06/2010, 05:00
 
Fecha de Ingreso: septiembre-2004
Ubicación: Andorra
Mensajes: 130
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: CURL. Grabar fichero

Gracias por la ayuda. En efecto era un problema de permisos. He conseguido crearlos con el Filezilla siguiendo este articulo : http://www.desarrolloweb.com/articulos/2311.php

Por si acaso alguien tiene el mismo problema (descargar el contenido visible de un fichero y volcarlo en un fichero de texto, doy el código que funcionó tras dar permisos por FTP) :

Código:
<?php

		$ch = curl_init ("http://www.google.es/");
		
		$conv="CADENA".$ch;
		
		$fus = fopen ("fichero.txt", "w");
		
		curl_setopt ($ch, CURLOPT_FILE, $fus);
		curl_setopt ($ch, CURLOPT_HEADER, 0);
				
		curl_exec ($ch);
		curl_close ($ch);
		fclose ($fus);
	?>
Ahora tengo otro problema.
Quisiera que el fichero resultante fuera la fusion de una cadena de texto y el contenido leido por CURL(ahora es sólo el contenido leido), pero por más que he intentado jugar con las cadenas de texto no lo consigo. ¿ Alguien sabe como hacerlo ?
  #12 (permalink)  
Antiguo 01/06/2010, 07:04
Avatar de Nekeniehl  
Fecha de Ingreso: julio-2009
Ubicación: Berlin, Alemania / Granada, España
Mensajes: 132
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: CURL. Grabar fichero

Puedes primero escribir lo que te devuelve cUrl y despues añadir la cadena de texto, puedes cerrarlo y volver a abrirlo con 'a' por ejemplo
Cita:
mode Descripción
'r' Apertura para sólo lectura; coloca el puntero al archivo al principio del archivo.
'r+' Apertura para lectura y escritura; coloca el puntero al archivo al principio del archivo.
'w' Apertura para sólo escritura; coloca el puntero al archivo al principio del archivo y trunca el archivo a longitud cero. Si el archivo no existe se intenta crear.
'w+' Apertura para lectura y escritura; coloca el puntero al archivo al principio del archivo y trunca el archivo a longitud cero. Si el archivo no existe se intenta crear.
'a' Apertura para sólo escritura; coloca el puntero al archivo al final del archivo. Si el archivo no existe se intenta crear.
'a+' Apertura para lectura y escritura; coloca el puntero al archivo al final del archivo. Si el archivo no existe se intenta crear.
'x' Creación y apertura para sólo escritura; coloca el puntero al archivo al principio del archivo. Si el archivo ya existe, la llamada a fopen() fallará devolviendo FALSE y generando un error de nivel E_WARNING. Si el archivo no exite se intenta crear. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT para la llamada al sistema open(2) subyacente.
'x+' Creación y apertura para lectura y escritura; coloca el puntero al archivo al principio del archivo. Si el archivo ya existe, la llamada a fopen() fallará devolviendo FALSE y generando un error de nivel E_WARNING. Si el archivo no exite se intenta crear. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT para la llamada al sistema open(2) subyacente.
Edit: Aunque bueno, la solución puede ser mucho mas facil que todo eso, una vez recojas el return de $ch concatenes la cadena y lo escribas en el fichero
__________________
Antes de cambiar el mundo...dá tres vueltas por tu casa

Usa Google es tu amigo ;)

Etiquetas: curl, fichero, grabar
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 13:32.