IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SSH2] download : ssh2 -> serveur local


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre actif Avatar de pimpmyride
    Inscrit en
    Décembre 2005
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 321
    Points : 207
    Points
    207
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    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 ?

  3. #3
    Membre actif Avatar de pimpmyride
    Inscrit en
    Décembre 2005
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 321
    Points : 207
    Points
    207
    Par défaut
    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

  4. #4
    Membre actif Avatar de pimpmyride
    Inscrit en
    Décembre 2005
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 321
    Points : 207
    Points
    207
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. serveur local apache, problème d'affichage
    Par ptit_seb dans le forum Apache
    Réponses: 2
    Dernier message: 09/01/2006, 00h40
  2. Insertion de données serveur local -> serveur distant
    Par Sunny dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/12/2005, 15h19
  3. apostrophe et serveur local
    Par Paulhac dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 06/11/2005, 20h23
  4. [Debutant]Impossible de se connecter au serveur local
    Par Kenji dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 24/04/2005, 20h55
  5. serveur local Easyphp
    Par Covax dans le forum Débuter
    Réponses: 3
    Dernier message: 05/04/2004, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo