Détecter automatiquement les disques durs d'un serveur

difno -  
 dinfo -
Bonjour,

Je voulais afficher dans un tableau la taille, l'espace libre ... de tous les disques durs d'un serveur mais les noms des disques durs ne sont pas stables c'est à dire on peut ajouter ou retirer des disques durs et du coup j'ai pensé à mettre ce code là:
    <?php 
 $data = array();
   $disques = array ("A:", "B:", "C:", "D:", "E:", "F:", "G:", "H:", "I:", "J:", "K:", "L:",          "M:", "N:", "O:", "P:", "Q:", "R:", "S:", "T:", "U:", "V:", "W:", "X:", "Y:", "Z:");
    // $disques = array ("C:", "G:");

$i =0;
 foreach($disques as $disque){
         //pour ajouter dans le tableau que les disques qui existent dans ce serveur
 if(!empty(disk_total_space($disque))){ 
        $disp = disk_free_space($disque);
 $total = disk_total_space($disque); 


$data[$i]['Nom_disque'] = $disque;
 $data[$i]['Taille_disponible'] = _format_bytes($disp);
    $data[$i]['Taille_utilise'] = _format_bytes($total - $disp);
        $data[$i]['Taille_total'] = _format_bytes($total);
        $data[$i]['Utilisation'] = number_format((_format_bytes(($total - $disp)                   /$total)) * 100, 0, ".", " ") ;
        $i++;

} 
}

EDIT : AJout des balises de code

Mais cette fonction 'disk_total_space($disque)' m'affiche un erreur quand il ne trouve pas le disque qui correspond aux alphabets que j'ai cités dans le tableau des disques :/

Je me suis bloquée là et je ne trouve pas une solution pour m'avancer ;( s'il vous plait j'ai besoins vraiment de votre aide et merci d'avance pour cela.

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    TU n'as qu'a vérifier avant si le "disque" existe ou non.
    https://www.php.net/manual/en/function.is-dir.php
    0
    1. dinfo
       
      Bonjour ,
      Merci pour la réponse je vais essayer cette fonction :)
      0
  2. dinfo
     
    Bonjour,
    Merci pour la fonction il fonctionne très bien :)
    Mais il m'affiche toujours cette erreur et j'en savais pas pourquoi ! :
    Warning: disk_total_space(): in C:\wamp\www\***.php on line 21
    Voici le code:

     <?php 
       $data = array();
       $disques = array ("A:", "B:", "C:", "D:", "E:", "F:", "G:", "H:", "I:", "J:", "K:", "L:", "M:", "N:", "O:", "P:", "Q:", "R:", "S:", "T:", "U:", "V:", "W:", "X:", "Y:", "Z:");
        // $disques = array ("C:", "G:");
    
        $i =0;
       foreach($disques as $disque){
        if(is_dir($disque)){
     //pour ajouter dans le tableau que les disques actifs
      if(disk_total_space($disque)!=false){ 
               $disp = disk_free_space($disque);
        $total = disk_total_space($disque); 
    
     
             $data[$i]['Nom_disque'] = $disque;
        $data[$i]['Taille_disponible'] = _format_bytes($disp);
         $data[$i]['Taille_utilise'] = _format_bytes($total - $disp);
             $data[$i]['Taille_total'] = _format_bytes($total);
             $data[$i]['Utilisation'] = number_format((_format_bytes(($total -          $disp) /$total)) * 100, 0, ".", " ") ;
        $i++;
    
     } 
     }
    } 
    

    EDIT : Ajout des balises de code (... encore.... )

    Merci d'avance pour votre aide.
    Cordialement ;
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Suffit de lire la doc... https://www.php.net/manual/fr/function.disk-total-space.php
      Je suppose que ça vient de là :
      Note: Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.
      0
    2. dinfo
       
      Oui j'ai lu déjà la doc mais les disques ne sont pas distants ?!
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > dinfo
       
      quel est le message d'erreur EXACT et COMPLET ?
      0
    4. dinfo
       
      Voici le message d'erreur:

      ( ! ) Warning: disk_total_space(): in C:\wamp\www\mondossier\disques.php on line 21
      Call Stack
      # Time Memory Function Location
      1 0.0010 143880 {main}( ) ..\disques.php:0
      2 0.0200 272384 disk_total_space ( ) ..\disques.php:21
      0