Page 1 sur 1

chemin absolu qui pointe sur un autre server

Posté : 31 mai 2012, 13:40
par loco1979
Bonjour à tous,
ceci est mon premier poste sur ce forum.

Mon problème est le suivant:
- ma page php est hébergée sur un server "servernameX"
- je souhaite établir une liste de fichiers qui se trouve dans le dossier "foldername" d´un autre server "servernameY"
- pour cela je dois entrer un chemin absolu

Info: lorsque le chemin est relatif ( "." ou "../test"), la fonction fonctionne :)

Ma fonction ressemble à ca:
<?php
function echodir($path = "//servernameY/foldername/")   {
      $dir = dir($path);
      while(false !== ($file = $dir->read()))
      {
        if(("."  == $file) OR (".." == $file)) continue;
            echo($path."/".$file."<br >\n");
      }
      $dir->close();
}
?>
Est ce que quelqu´un pourrait me dire si cela est realisable. Si oui, comment dois je entrer le chemin absolu?

Re: chemin absolu qui pointe sur un autre server

Posté : 31 mai 2012, 19:20
par xTG
Tu ne peux pas accéder au système de fichier d'un autre serveur.
Et encore heureux, sinon bonjour le trou de sécurité. ;)
Si c'est une machine sur le même réseau et que la gestion des droits est configurée peut être que cela peut se faire.
Mais sinon il faudra passer par un webservice pour exécuter le script sur le serveur distant et récupérer le résultat.

Re: chemin absolu qui pointe sur un autre server

Posté : 01 juin 2012, 09:55
par loco1979
Merci xTG pour ta réponse.
Les deux machines sont sur le même réseau, je vais donc me renseigner sur les droits d´accès d´une machine à l´autre.

Re: chemin absolu qui pointe sur un autre server

Posté : 01 juin 2012, 11:43
par xTG
Renseignes toi du côté des partages de disque (lecteur réseau).

Re: chemin absolu qui pointe sur un autre server

Posté : 13 juin 2012, 10:16
par loco1979
Je me suis renseigné auprès de mon administrateur réseau.

Des modifications au niveau des partages de disque sont envisageables. Cette solution s´avère pratique lorsque l´on ne veut accéder qu´à un disque ou un dossier.

Pour ma part, je souhaite être flexible et pouvoir accéder à plusieurs disques à partir de ma page intranet sans avoir à m´adresser mon administrateur réseau à chaque fois.
Je me connecte au serveur avec "ftp_connect" et "ftp_login".
Pour cela, je créé un username (avec un mot de passe) qui est un droit d´accès à tous les disques ou projets dans lesquels je veux lire ou enregistrer des fichiers à partir de ma page intranet.
Cela fonctionne super.

Re: chemin absolu qui pointe sur un autre server

Posté : 13 juin 2012, 10:33
par loco1979
Ah j´oubliais. Ma solution ressemble à ca:
<?php
$ftp_server    = "serverXX";
$ftp_user_name = "username";
$ftp_user_pass = "motdepasse";
$Verzeichnis   = "/xxx/yyy/blabla";
$ConnectID = ftp_connect($ftp_server)or die("Couldn't connect to server");
$Login = ftp_login($ConnectID, $ftp_user_name, $ftp_user_pass);
ftp_pasv($ConnectID, TRUE); 

function ftpFichierList($ConnectID, $Verzeichnis) {
    static $allFiles = array();
//$ordner = substr($Verzeichnis, strlen($Verzeichnis)); ne fonctionne pas chez moi
    $ordner = substr($Verzeichnis, 44); // 44= longeur de chemin
    $contents = ftp_nlist($ConnectID, $Verzeichnis);

    foreach($contents as $currentFile) {
        // est un dossier lorsqu´il n´a pas de point
        if (strpos($currentFile, '.') === false) {
            ftpFichierList($ConnectID, $currentFile);
        }
        else{
            $allFiles[$ordner][] = substr($currentFile, strlen($Verzeichnis) + 1);
        }
    }
    return $allFiles;
}

$allFiles = ftpFichierList($ConnectID, $Verzeichnis);

?>
puis
<?php
//    print_r(array_keys($allFiles));
while (list($key) = each($allFiles)){
    if ($key != "0"){
      echo "<b>$key</b>";
    }
    foreach ($allFiles[$key] as $file) {
      echo "<li>$file</li>";
    }
    echo "<br>";
}
?>
Par contre j´ai un petit problème.
$ordner = substr($Verzeichnis, strlen($Verzeichnis));
ne voulant pas fonctionner, je l´ai tout simplement remplacer par
$ordner = substr($Verzeichnis, 44);
ce qui est vraiment du bricolage.

Si quelqu´un peut me faire une suggestion... merci d´avance.

Re: chemin absolu qui pointe sur un autre server

Posté : 13 juin 2012, 10:47
par Mazarini
$ordner = substr($Verzeichnis, strlen($Verzeichnis));
Je doute que strlen($Verzeichnis) retourne 44.
Extraire d'une chaine les caractères après le dernier caractère de cette meme chaine... surement une erreur d'inattention ou un copier/coller trop rapide.

Re: chemin absolu qui pointe sur un autre server

Posté : 25 juin 2012, 14:16
par loco1979
Effectivement une erreur d´inattention.
Dans
$ordner = substr($Verzeichnis, strlen($Verzeichnis));
le premier $Verzeichnis varie alors que le deuxième $Verzeichnis est le dossier original que je donne au début et donc ne doit pas varier.
Je fais donc
$Verzeichnislaenge = strlen($Verzeichnis) +1;
avant ma fonction ftpRecursiveFileListing et j´envoie $Verzeichnislaenge dans ma fonction:
function ftpRecursiveFileListing($ConnectID, $Verzeichnis, $Verzeichnislaenge)
et l´utilise à la place de "44":
$ordner = substr($Verzeichnis, $Verzeichnislaenge);
Merci pour ta remarque Mazarini.