Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2006, 15h30   #1
Membre habitué
 
Inscription : février 2004
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2004
Messages : 161
Points : 114
Points : 114
Par défaut [cURL] Copie de fichier avec Curl

Bonjour à tous,

Je n'ai jamais utilisé les fonctions Curl et aujourd'hui on me demande, grace à cela d'ouvrir un fichier sur un serveur pour pouvoir le recopier sur un autre;

J'ai essayé de trouvé des choses sur le net mais je n'avance pas... Je ne comprends pas comment utiliser cette librairie.

Si quelqu'un peut m'aider.... à trouver des pistes...

Merci d'avance
eowene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2006, 15h37   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Pour commencer ça dépend du protocole utilisé pour effectuer cette copie. Pouvez-nous en dire plus ?

Je rajoute quelques liens :

Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2006, 15h59   #3
Membre habitué
 
Inscription : février 2004
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2004
Messages : 161
Points : 114
Points : 114
En fait, je ne sais pas grand chose.
Juste que j'ai un fichier à un endroit sur le net qui va me servir à faire la mise à jour de ma base.
Donc je dois aller sur le site www.toto.com/fichier.php

Et là je dois copier le fichier qui se trouve sur le serveur pour voir si ma base à déjà reçu la mise à jour ou pas....

Bon, je sais que je ne suis pas très claire mais en fait moi meme je me perd un peu dans ce qu'on me demande de faire...
eowene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2006, 16h36   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php
define('URL', 'http://www.toto.com/fichier.php');
define('SORTIE', '../writable/mon_fichier_de_sortie.txt');
 
$ch = curl_init(URL);
$fp = fopen(SORTIE, 'w') or die('Ouverture du fichier en écriture');
 
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
 
curl_exec($ch) or die('Erreur Curl');
curl_close($ch);
fclose($fp);
?>
A noter que le dossier accueillant la copie doit avoir les droits en écriture pour php/apache (à moins qu'il n'existe déjà auquel cas ce sont les permissions de ce dernier qu'il faut changer). Dans le cas d'un script php, vous n'obtiendrez que le résultat de son interprétation (du code HTML donc).

A vous ensuite d'ajouter le coder pour traiter le fichier que vous récupérez.


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2006, 16h41   #5
Membre habitué
 
Inscription : février 2004
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2004
Messages : 161
Points : 114
Points : 114
Merci beaucoup
je vais essayer ça.
eowene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 10h09   #6
Membre habitué
 
Inscription : février 2004
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2004
Messages : 161
Points : 114
Points : 114
Par défaut Encore besoin d'un peu d'aide...

Je cherche à ouvrir un fichier txt pour l'ecrire dans un autre fichier texte.
Je me suis inspirée de ta réponse et mon code donne ça maintenant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
 
//URL où se trouve le fichier
define('URL', 'http://ww.exemple.com/');
//Répertoire et Fichier d'entree
define('ENTREE', './upload/testinit.txt');
//Fichier de sortie
define('SORTIE', './upload/test.txt');
 
// On recherche la date de modification des deux fichiers pour savoir lequel est le plus récent.
$datelocal = date('Ymd',filemtime(SORTIE));
$datedistant = date('Ymd',filemtime(ENTREE));
 
 
//Si le fichier à importer est plus rcent, on réalise l'import
if ($datedistant >= $datelocal) {
	//Initialisation CURL et Ouverture du fichier 
	$ch = curl_init(URL);
	$fp = fopen(SORTIE, 'w') or die('Ouverture du fichier impossible en écriture');
	$file = fopen(ENTREE, 'r') or die('Ouverture du fichier impossible en lecture');
 
	//Définition des options CURL 
	curl_setopt($ch, CURLOPT_FILE, $fp);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_UPLOAD, TRUE);
	curl_setopt($ch, CURLOPT_INFILE, $file);
 
	//Execution CURL et Fermeture des connexions
	curl_exec($ch) or die('Erreur Curl : 'curl_error($ch));
	curl_close($ch);
	fclose($fp);
	fclose($file);
 
	 echo 'Ok';
 
} else {
	echo 'Pas de nouveau fichier';
}
Finalement, ça m'affiche bien Ok.
Il trouve bien les 2 fichiers puisque lorsque j'affiche les $date elles sont bonnes.
Ca me crée le nouveau fichier (test.txt) s'il n'existe pas. Mais voilà, il est vide....
Il n'y a rien dedans. Alors que j'ai du text dans le fichier initial...

Merci de ton aide.
eowene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 11h53   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Euh ... je ne comprends pas ce que vous cherchez à faire Pour copier un fichier vous avez la fonction copy et l'option CURLOPT_INFILE sert à envoyer un fichier (mais j'ai un doute sur son utilisation avec le protocole HTTP).


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 12h03   #8
Membre habitué
 
Inscription : février 2004
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2004
Messages : 161
Points : 114
Points : 114
Je cherche effectivement à copier le fichier mais on m'a dit que je devais passer par CURL de manière à sécuriser la connexion au fichier.
eowene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 14h03   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
D'accord, mais je faisais référence aux buts des modifications que vous avez apporté. En clair, que souhaitiez-vous faire avec le fichier ENTREE (c'est cette partie que je ne comprends pas) ?

J'ai remarqué une erreur également ci-dessus :
Code :
curl_exec($ch) or die('Erreur Curl : 'curl_error($ch));
A remplacer par :
Code :
curl_exec($ch) or die('Erreur Curl : ' . curl_error($ch));
Mais vous l'avez probablement déjà remarqué et corrigé.


Cordialement, Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 15h03   #10
Membre habitué
 
Inscription : février 2004
Messages : 161
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2004
Messages : 161
Points : 114
Points : 114
Effectivement, j'avais vu cette erreur et je l'ai corrigé.

En fait je souhaite copier les infos contenues dans mon fichier ENTREE dans mon fichier SORTIE.

Bref, une simple copie de fichier...
Mais en utilisant curl de manière à avoir un accès sécurisé à mon fichier.
eowene est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h27.


 
 
 
 
Partenaires

Hébergement Web