Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 04/05/2011, 11h05   #1
Invité de passage
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 0
Points : 0
Par défaut open_dir, FTP et mode ASCII

Bonjour !

Je lis un fichier .csv déposé sur un serveur par une application tierce.
Tout allait bien jusqu'à ce qu'un jour:
Code :
Warning: opendir(ftp://...@transporturgent.com/importcontacts/) [function.opendir]: failed to open dir: FTP server reports 200 Switching to ASCII mode. in /home/transpor/www/courses/infocob/import_clients_csv.php on line 34
Voilà mon code PHP:
Code :
1
2
3
4
5
6
7
8
9
10
11
$repertoire_import = "ftp://login:motdepasse@serveur.com/";
 
// on parcourt le répertoire
if (is_dir($repertoire_import))
{
    if ($dh = opendir($repertoire_import))
{
	while (($file = readdir($dh)) !== false)
		{	
			$handle = fopen($repertoire_import . $file, "r");
// traitement du fichier...
A votre avis, qu'a-t-il bien pu se passer ?
xdeslandes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h10   #2
Rédacteur/Modérateur

 
Avatar de arnolem
 
Inscription : février 2005
Messages : 2 798
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : février 2005
Messages : 2 798
Points : 2 673
Points : 2 673
Je te conseille d'utiliser la classe FTP
arnolem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h52   #3
Invité de passage
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 0
Points : 0
J'étais parti sur ça au départ mais, je ne me souviens pourquoi, j'avais abandonné.
Crois-tu que cela résoudrait mon prob ?
Ecoute, je retente un script avec la bibliothèque de fonctions FTP de PHP et je reviens...
Merci.
xdeslandes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 16h48   #4
Rédacteur/Modérateur

 
Avatar de arnolem
 
Inscription : février 2005
Messages : 2 798
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : février 2005
Messages : 2 798
Points : 2 673
Points : 2 673
Oui je pense.
Si tu fais un ftp_fget (http://fr2.php.net/manual/fr/function.ftp-fget.php).
Tu as l'option Le mode de transfert. Doit être soit FTP_ASCII, soit FTP_BINARY.
arnolem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 17h07   #5
Invité de passage
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 0
Points : 0
En fait, une connexion FTP est idéale lorsqu'on cherche à télécharger un fichier, ou envoyer un fichier sur le serveur.
Moi, je ne cherche qu'à lire un ou plusieurs fichier(s), traiter les données, puis détruire ce fichier. Or, dans la doc PHP, je ne vois pas de fonction ftp qui permettent de passer en revue les fichiers d'un répertoire par exemple... (comme le fait readdir())
xdeslandes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 17h34   #6
Invité de passage
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 0
Points : 0
En guise de test, je fais
Code :
1
2
3
4
5
6
7
8
9
 
$ftp_server = "serveur.com";
$connexion_id = ftp_connect($ftp_server) or die("Impossible de se connecter au serveur $ftp_server"); 
$ftp_user = 'xxxxx';
$ftp_pass = 'yyyyy';
ftp_login($connexion_id, $ftp_user, $ftp_pass) or die ("Connexion impossible avec le serveur.");
echo '<p>On liste les fichiers contenus dans <b>'.$rep.'</b>:</p>';
$tab_fichiers = ftp_rawlist($connexion_id, $rep);
echo '<pre style="text-align: left;">Liste:', print_r($tab_fichiers), '</pre>'."\n";
Mais le script dure trop longtemps (max execution time) à la ligne ftp_rawlist, alors qu'il n'y a que 6 fichiers .txt dans le réertoire en question (je le sais via un client FTP)
xdeslandes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 18h04   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
la méthode du début était la bonne rajoute juste le mode binaire dans ton url

ftp://login:motdepasse@serveur.com/;type=i
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 12h40   #8
Invité de passage
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 0
Points : 0
Je ne reviens que maintenant !!
Mon pb n'est toujours pas résolu.

Merci stealth35, mais peux-tu préciser ?
xdeslandes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 13h25   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par xdeslandes Voir le message
Merci stealth35, mais peux-tu préciser ?
qu'est ce que tu comprends pas ? j'ai mis un exemple pourtant
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h22   #10
Invité de passage
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 0
Points : 0
Tu veux dire que je dois ajouter au bout de mon url ??
xdeslandes est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h25   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par xdeslandes Voir le message
Tu veux dire que je dois ajouter au bout de mon url ??
oui
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h43   #12
Invité de passage
 
Inscription : octobre 2006
Messages : 28
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 28
Points : 0
Points : 0
OK, je n'ai plus le message, mais alors la fonction is_dir me répond
Code :
1
2
 
ftp://login:mpasse@serveur.com/mondossier/;type=i n'est pas un dossier.
ce qui est logique.

J'ai aussi essayé de faire
Code :
is_dir(tp://login:mpasse@serveur.com/mondossier/)
puis
Code :
opendir(tp://login:mpasse@serveur.com/mondossier/;type=i)
mais j'ai encore la réponse
Code :
Warning: opendir(ftp://...@transporturgent.com/importcontacts/;type=i) [function.opendir]: failed to open dir: FTP server reports 200 Switching to ASCII mode. in...
Ta syntaxe ';type=i' me semble bizarre.
xdeslandes 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 10h49.


 
 
 
 
Partenaires

Hébergement Web