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

Langage PHP Discussion :

Copie de fichiers entre serveur linux et W2008


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 52
    Points
    52
    Par défaut Copie de fichiers entre serveur linux et W2008
    Bonjour,

    Je suis un peu ennuyé voir même plus !!!!!

    Je voudrai copier un fichier txt depuis mon serveur intranet vers un serveur W2008 mais je n'y arrive pas.
    Je ne sais vraiment pas comment faire !!!
    Avez vous des idées à me donner ???

    A+

  2. #2
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    J'ai peut être trouvé une solution.

    En fait j'ai monté un dossier partagé Windows sous linux.
    Au préalable il faut créer dans Active Directories un utilisateur pour l'authentification
    Moi je l'ai nommé "toor" avec un password bien sur avec des droits administrateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mount -v -t cifs //192.168.0.45/partage_windows /point_de_montage -o username=toor,password=pwd,file_mode=0666,dir_mode=0770
    Pour plus d'information voici le site qui m'a aidé http://www.pintaric.net/index.php?po...ows-sous-Linux

    Ceci permet d'avoir directement dans le dossier"point_de_montage" un accès au partage windows.

    Du coup j'ai bien mon lien entre les partages !!!!

    MAIS, je ne sais pas comment avec mon application intranet je pourrai modifier les fichiers qui se trouvent dans le partage.
    J'ai beau essayer rien n'y fait, pour preuve je n'arrive même pas à detecter la présence des fichiers.


    Maintenant j'espère que l'un d'entre vous aura une idée !!!!!

    Allé, soyez sympa quoi !!!!

    A+

  3. #3
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    tu as monter un partage mais où l'a tu monter? dans quel répertoire? si tu ne l'a pas monter dans le répertoire d'hébergement de ton intranet ton serveur web ne pourra pas détecter ton partage. à la rigueur création d'un lien (ln -s ) vers se répertoire dans le répertoire ou se trouve tes scripts de travail .

    pense aussi à vérifier les droits sur ton répertoire et tes fichiers.

  4. #4
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    Bon alors heuuuuuuu!!!!

    D'abord bonjour,

    En fait le dossier de point de montage est bien dans un répertoire d'hébergement de mon site intranet.

    Pour ce qui est des droits de mon partage, quand j'ai créé celui-ci je lui ai donné les attributs de partage à 0770 (lecture/écriture sur les dossiers).

    Je ne vois où j'ai pu pécher !!!!

    A+

  5. #5
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    quel type de fichier à modifier?
    est il possible d'avoir un morceau de code en exemple?

  6. #6
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    Les fichiers à modifier sont des fichiers TXT tous bêtes
    Contenu du fichier texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [APPLI 01.02.00]
    test_type=FICHIER
    test_createur=APPLI
    test=c:\dossier\APPLI\version.dat
    commande=X:\partage_serveur\APPLI 01.02.00\setup.exe -s
    reptravail=X:\partage_serveur\APPLI 01.02.00
    process=_ISDel.exe
    date=15/09/2010
    Ceci permet de lancer une installation automatique en fonction des paramètres contenu dans le fichier pour l'application "APPLI 01.02.00"
    Ce fichier txt sert pour une application développée avec AUTO-IT qui est exécutée à chaque démarrage de nos PCs.

    Ensuite au niveau de ma page PHP, je ne sait pas quoi lancer comme commande pour effectuer la copie vers le serveur W2008.
    Comme je l'ai expliqué au début mon point de montage permet de voir sur le serveur intranet le dossier "Toto" qui se trouve sur le serveur W2008.
    Et c'est dans ce dossier "Toto" que veux enregistrer mon fichier TXT afin qu'il puisse être répliqué sur tous nos serveurs distants.

    Au niveau des droits, ils sont à 0770 ( écriture / lecture ) sur le point de montage .
    Mais ce qui est marrant (enfin presque !!!) quand j'ouvre un putty sur le serveur intranet, je peux créer, modifier et supprimer les fichiers sur le point de montage, idem avec WINSCP....

    Pour ma page pHP, je ne sais pas si je dois faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (!copy("test.txt", "fichiers_teledif/test.txt")) 
    {
        echo "<br>La copie $file du fichier a échoué...\n";
    }
    ou

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    if (file_exists($_POST["fichier"]))
    {
       $handle  = fopen($_POST['fichier'],"wb");
       if (is_writable($_POST['fichier'])) 
       {
          $_POST["objet"] = str_replace('\\\\','\\',$_POST["objet"]);
          if (fwrite($handle , $_POST["objet"]) === FALSE) 
          {
    	echo "Impossible d'écrire dans le fichier (".$_POST['fichier'].")";
    	exit;
          }
          else
          {
              $sql = "SELECT information FROM ".$CLASS->Ttele." WHERE ".$CLASS->Ttele.".name_appli LIKE '".$_POST['appli']."'";
              $data=mysql_query($sql,$CLASS->connexion) or die("La requête -<2>- n'a pu aboutir ");
              $count = mysql_result($data, 0);
              echo '<div><h3 style="color:#274E9C; text-decoration:underline">Contenu de la base de données pour '.$_POST['appli'].'</h3>';
               echo '<A id=deconnexion href="javascript:window.close()"><IMG title=Déconnexion alt=Déconnexion&nbsp; src="images/webAppli_entete_btDeconnect.gif"> </A>';
               echo '</div>';
               echo '<PRE><textarea name="objet" cols="70" rows="20" style="background-color:#FFFFFF;color:#3963AD;border:1px solid #3963AD;" readonly>'.$count.'</textarea></PRE>';
    						echo '<br>Modification terminée';
    	fclose($handle);
            }
       }
       else 
          echo "Fichier pas autorisé en écriture !!!";
    }
    else 
       echo "Le Fichier n'existe pas !!!";
    Si tu as une idée ...

  7. #7
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    Au niveau des droits, ils sont à 0770 ( écriture / lecture ) sur le point de montage .
    Mais ce qui est marrant (enfin presque !!!) quand j'ouvre un putty sur le serveur intranet, je peux créer, modifier et supprimer les fichiers sur le point de montage, idem avec WINSCP....
    est tu sur de te connecter avec le même utilisateur que celui utiliser pour la navigation dans les pages web?

    ensuite le répertoire monté "fichiers_teledi" est bien au même niveau que ton script?

    enfin un petit test, si tu copie ton fichier dans le même répertoire que l'originale puis un rename pour le déplacer cela donne quoi?

  8. #8
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    Pour ce qui est des utilisteurs, j'ai créé un utilisateur dans "ActiveDirectory" qui est identique à l'utilisateur sur l'intranet.
    De toutes façons si les users étaient pas bon je n'aurais pas pu créer le point de montage.

    Pour ce qui est du dossier "fichiers_teledif", c'est mon point de montage sur le serveur intranet. Quand le point de montage est installé je retrouve da
    ns ce dossier l'ensemble des fichiers du serveur W2008 que je voudrai modifier...

    Pour le rest je le ferai demain matin car là j'ai pas le temps...

    Donc suite demain matin

  9. #9
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    Citation Envoyé par tissard Voir le message
    De toutes façons si les users étaient pas bon je n'aurais pas pu créer le point de montage.
    hop hop hop l'utilisateur montant le partage n'est pas forcément l'identique de celui utiliser lorsque tu navigue. pour ma part j'ai un utilisateur spécifique à la navigation, un spécifique à la base de données et un à mes partages. je gère des droits différents en fonction de ses comptes.

    mais bon essais de voir déjà ce que j'ai indiqué juste avant et un ptit ls -l des fichier présent sur ton serveur windows car ce n'est pas parce que tu as les droits sur ton répertoire monté que les fichier en hérite forcément.

  10. #10
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    Hello Vil'Coyote,

    Bon alors avec un peu de retard ....

    j'ai fait un ls -l sur le point de montage; tous les fichiers sont en "-rw-rw-rw-"et les dossiers sont en "drwxrwxrw-".

    Ensuite j'ai fait un petit test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "- Test -<br>";
    exec("cp -f test.txt fichiers_teledif/test/test.txt",$array,$exec);
    echo "<br>Retour de exec :".$exec;
    J'ai fait la même chose avec les commandes "mv" et "rename".
    Dans tous les cas $exec retourne 1, donc pas bon du tout...

    Je suis sûr que tu as raison pour les user mais comment faire ....
    Je sens que tu as une idée ...

    A+

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 31
    Points : 31
    Points
    31
    Par défaut
    Pour un peu plus de comprehension du probleme : tu pourrai faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "- Test -<br>";
    $temp=exec("cp -f test.txt fichiers_teledif/test/test.txt",$array,$exec);
    print_r($temp);
    et tu auras le retour de la commande

    Tartine

  12. #12
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    Bon ben la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $temp=exec("cp -f test.txt fichiers_teledif/test/test.txt",$array,$exec);
    print_r($temp);
    ne m'a rien retournée !!!

    Par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo "- Test -<br>";
    $temp=exec("cp -f test.txt fichiers_teledif/test/test.txt",$array,$exec);
    print_r($temp);
    echo "<br>résultat de exec():".$exec;
    Le résultat de "$exec" est égal à 1.
    Donc la commande ne passe pas comme il faut !!!

    J'ai trouvé une autre commande qui me semble serait plus adaptée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "- Test -<br>";
    $temp=exec("smbclient ".$fichier_dest." -U user%pwd -c 'put fichiers_teledif/test.txt'");
    print_r($temp);
    Et voici le retour de la commande:
    - Test -
    NT_STATUS_OBJECT_NAME_INVALID opening remote file \//XX.XXX.X.XX/appli/test.txt
    appli est un partage Windows
    fichiers_teledif est un partage SAMBA
    $fichier_dest = "//XX.XXX.X.XX/appli"

    Qu'en pensez vous les enfants?

  13. #13
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    Toujours pas d'idées pour mon problème !!!!!!!!!!!

  14. #14
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 127
    Points : 52
    Points
    52
    Par défaut
    J'y suis enfin arrivé !!!!

    Alors pour commencer il faut sur le serveur WINDOWS 2008 créer des partages sur tous les dossiers où l'on souhaite copier les fichiers.

    Les fichiers à télécharger sont toujours des fichiers TXT comme vu précédement.

    Par contre, dans ma base mySQL, dans ma table APPLI, j'ai un champs qui est rempli avec le contenu de chaque fichier de mise à jour.
    Exemple de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    idx_dif   = 1 
    name_appli  = APPLI        
    information =[APPLI 3.5.1] date=28/09/2010 + ligne de commande d'installation
    Sur le serveur INTRANET, il faut créer un dossier (Attention aux droits) où on aura l'ensemble des fichiers que l'on voudra envoyer vers le W2008.

    On va d'abord modifier le fichier en local sur le serveur INTRANET, puis ensuite on copiera ce fichier sur le serveur W2008 via FTP.

    Voici le code dans ma page en php :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    $ftp_server = "WWW.XXX.YYY.ZZZ";
    $ftp_user_name = "anonymous";
    $ftp_user_pwd = "anonymous";
    $_POST["objet"] // Contient le nouveau texte à écrire dans le fichier
    // chemin vers le partage Windows 2008
    $_POST["fichier_dest"]="partage/nom_du_fichier.txt";
    //chemin vers le fichier sur le serveur intranet;
    $_POST["fichier"] = /site/intranet/application/partage/nom_du_fichier.txt
     
    if (file_exists($_POST["fichier"]))
    {
        $handle  = fopen($_POST['fichier'],"wb");
        if (is_writable($_POST['fichier'])) 
        {
           $_POST["objet"] = str_replace('\\\\','\\',$_POST["objet"]); 
           if (fwrite($handle , $_POST["objet"]) === FALSE) 
           {
    	echo "Impossible d'écrire dans le fichier (".$_POST['fichier'].")";
    	exit;
           }
           else
           {
             // REQUETE SQL permettant de modifer la table APPLI en focntion des modifications saisies
              $sql = "SELECT information FROM Ttele WHERE Ttele.name_appli LIKE '".$_POST['appli']."'";
              $data=mysql_query($sql,$connexion) or die("La requête -<2>- n'a pu aboutir ");
     
            // Enregistrement du fichier dans le partage
     
              $count = mysql_result($data, 0);
              $conn_id = ftp_connect($ftp_server);				
              $login_result = ftp_login($conn_id, $ftp_user_name,$ftp_user_pwd);	
              // Vérification de la connexion
              if ((!$conn_id) || (!$login_result)) 
              {
                echo "La connexion FTP a échoué!";
                echo "Tentative de connexion à $ftp_server avec $ftp_user_name";
                die;
              } 
              else 
              {
                echo "Connecté à $ftp_server, avec user '$ftp_user_name' <br>";
              }
     
              if(ftp_put($conn_id, $_POST['fichier_dest'],$_POST['fichier'], FTP_BINARY)) 
              {
                echo "Le fichier $file a été chargé avec succès sur //".$ftp_server."/".$_POST['fichier_dest']."/ \n";
              }
              else 
              {
                 echo "Il y a eu un problème lors du chargement du fichier\n";
              }
              // Fermeture de la connexion
              ftp_close($conn_id);
           }
    }
    else 
      echo "Fichier pas autorisé en écriture !!!";
    }
    else 
      echo "Le Fichier n'existe pas !!!";
    }
    else 
      echo "Aucun fichier à ouvrir !!!";
    Voilou j'y suis arrivé!!!!

    Je ne sais pas si ça va intéresser quelqu'un mais on ne sait jamais !!!!

    A+

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/10/2008, 13h35
  2. Copie de fichiers entre 2 serveurs IIS
    Par Laurent CUENET dans le forum IIS
    Réponses: 0
    Dernier message: 07/04/2008, 13h07
  3. Réponses: 2
    Dernier message: 06/02/2008, 17h23
  4. Réponses: 0
    Dernier message: 30/11/2007, 15h29
  5. [Système] problème de copie de fichier entre 2 serveurs
    Par HOUDEBINE dans le forum Langage
    Réponses: 2
    Dernier message: 22/05/2006, 16h13

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