2009-08-16 7 views
2

Comment puis-je lister le contenu d'un partage Windows en utilisant PHP?Comment parcourir un répertoire sur un réseau local en utilisant PHP?

$SearchFolder = "\\\\192.168.1.100\\pdfoutput\\"; 

if (is_dir($SearchFolder)) 
{ 
    if ($Directory = opendir($SearchFolder)) 
    { 
     while (($File = readdir($Directory)) !== false) 
     { 
      if(filetype($SearchFolder.$File) == "file") 
      { 
       $this->Attachments[] = new Attachment($SearchFolder.$File); 
      } 
     } 
     closedir($Directory); 
    } 
} 

Imprimer (opendir ($ SearchFolder)); donne cette erreur:

Warning: opendir(\192.168.1.100\pdfoutput) [function.opendir]: failed to open dir: No error in C:\Users\gary\Webserver\QuickMail\maildetails.php on line 227

Cela ne fonctionne pas comme prévu. Des pensées?

+1

Pourriez-vous contourner le problème en le mappant sur un lecteur? – Greg

+0

Aussi utilisez-vous PHP ou Apache? Si vous google "php unc path" vous obtenez quelques résultats sur les autorisations qui peuvent vous aider, mais ils diffèrent entre les serveurs Web – Greg

+0

@Greg: c'est les deux, sûrement? Il utilise le langage PHP sur le serveur Apache sous Windows (je suppose). Au moins, les deux ne sont pas mutuellement exclusifs. – DisgruntledGoat

Répondre

1

J'ai trouvé une bonne alternative à l'utilisation des chemins de réseau local et qui utilise un serveur FTP. Cela fonctionne très bien aussi étant donné que je devais aussi afficher certaines images de ce répertoire. Le serveur FTP que j'ai utilisé est très léger et permet l'accès à ce répertoire à partir du réseau local entier sans aucune erreur de sécurité ou d'autorisation.

$SearchFolder = "ftp://192.168.0.104/PDFOutput/"; 

if (is_dir($SearchFolder)) 
{ 
    if ($Directory = opendir($SearchFolder)) 
    { 
     while (($File = readdir($Directory)) !== false) 
     { 
       if(filetype($SearchFolder.$File) == "file") 
       { 
         $this->Attachments[] = new Attachment($SearchFolder.$File); 
       } 
     } 
     closedir($Directory); 
    } 
} 
3

Jetez un oeil aux commentaires des utilisateurs pour la fonction opendir au http://uk3.php.net/function.opendir. Il semble qu'il puisse y avoir des informations qui vous aideront. Plus précisément, ce morceau de code par DaveRandom peut résoudre votre problème:

<?php 
// Define the parameters for the shell command 
$location = "\\servername\sharename"; 
$user = "USERNAME"; 
$pass = "PASSWORD"; 
$letter = "Z"; 

// Map the drive 
system("net use ".$letter.": \"".$location."\" ".$pass." /user:".$user." /persistent:no>nul 2>&1"); 

// Open the directory 
$dir = opendir($letter.":/an/example/path") 
?> 
Questions connexes