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 04/06/2007, 12h30   #1
Membre actif
 
Avatar de pimpmyride
 
Inscription : décembre 2005
Messages : 303
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 303
Points : 156
Points : 156
Par défaut [SSH2] download : ssh2 -> serveur local

Bonjour,

J'ai un script qui se connect sur un serveur via ssh pour uploader et downloader des fichiers.
J'arrive a uploader les fichiers mais pas a les downloader. Je bloquer donc je demandes votre aide.
Voici le code pour l'upload qui foncionne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
$local = $dir.$file;
$remote = $remotedir.$file;
if(file_exists($local)){
	// lit le contenu du fichier en local
	$handle = fopen($local, "r");
	$contents = "";
	while(!feof($handle))
		  $contents .= fread($handle, 8192);
	fclose($handle);
 
	// ecrit le contenu sur le fichier distant
	$sftp = ssh2_sftp($this->conn_id);
	$stream = fopen("ssh2.sftp://$sftp".$remote, "w");
	if(!fwrite($stream, $contents))
                echo "upload échoué : $file";
	fclose($stream);
}
et voici mon code pour le download :
Le code "faux" est situé entre les lignes de commentaires :// marche pas // et // fin marche pas//. Quand le script est lancé le while a l'air de boucler à l'infini.
$t[0] represente le nom du fichier a downloader

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
$sftp = ssh2_sftp($this->conn_id);
// lit le contenu des fichiers distants
$remote = $remotedir.$t[0];
 
 
$stream = fopen("ssh2.sftp://$sftp".$remote, "r");
// marche pas //
while(!feof($stream))
	  $contents .= fread($stream, 8192);
fclose($stream);
// fin marche pas //
 
// écrit le contenu dans les fichiers en local
$local = $dir.$t[0];
$handle = fopen($local, "w");
if(!fwrite($handle, $contents))
	echo "upload échoué : ".$t[0];
fclose($handle);
 
fclose($stream);
Merci.
Si vous avez des liens d'aides sur cette bibliotheque (autre que php.net ) n'hésitez pas.
pimpmyride est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 12h35   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
peut etre un probleme dans le chemin du fichier vu que tu utilise le meme code en haut et qu'il fonctionne

Il manquerai pas un "/" entre le chemin du répertoire et le nom du fichier ?
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 14h03   #3
Membre actif
 
Avatar de pimpmyride
 
Inscription : décembre 2005
Messages : 303
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 303
Points : 156
Points : 156
malheureusement, non car ce sont les mêmes variables qui sont passées en parametres dans les fonctions. Et le fwrite en local fonctionne quand je passe une chaine de caractere à la place de la variable $contents
pimpmyride est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 14h54   #4
Membre actif
 
Avatar de pimpmyride
 
Inscription : décembre 2005
Messages : 303
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 303
Points : 156
Points : 156
me revoila, j'ai trouve mon erreur, tres bete d'ailleurs. fread ne s'utilise pas dans une while. il suffit donc de supprimer cette ligne et le code devient :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
$sftp = ssh2_sftp($this->conn_id);
// lit le contenu des fichiers distants
$remote = $remotedir.$t[0];
 
 
$stream = fopen("ssh2.sftp://$sftp".$remote, "r");
$contents .= fread($stream, 8192);
fclose($stream);
 
 
// écrit le contenu dans les fichiers en local
$local = $dir.$t[0];
$handle = fopen($local, "w");
if(!fwrite($handle, $contents))
	echo "upload échoué : ".$t[0];
fclose($handle);
 
fclose($stream);
pimpmyride est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h38.


 
 
 
 
Partenaires

Hébergement Web