Détecter automatiquement les disques durs d'un serveur

difno - 20 mars 2017 à 16:08 - Dernière réponse :  dinfo
- 4 avril 2017 à 14:11
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.
Afficher la suite 

9 réponses

Répondre au sujet
jordane45 19714 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 janvier 2018 Dernière intervention - 20 mars 2017 à 16:17
0
Utile
1
Bonjour,

TU n'as qu'a vérifier avant si le "disque" existe ou non.
http://php.net/manual/en/function.is-dir.php
Bonjour ,
Merci pour la réponse je vais essayer cette fonction :)
Commenter la réponse de jordane45
0
Utile
6
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 ;
Oui j'ai lu déjà la doc mais les disques ne sont pas distants ?!
jordane45 19714 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 janvier 2018 Dernière intervention > dinfo - 27 mars 2017 à 18:48
quel est le message d'erreur EXACT et COMPLET ?
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
jordane45 19714 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 janvier 2018 Dernière intervention - 27 mars 2017 à 19:06
Regarde si en modifiant le limite de temps ça ne corrigerait pas ton souci
http://php.net/manual/fr/function.set-time-limit.php
D'accord merci pour la réponse, j'ai cherché sur la solution que vous m'avez proposé sans résultat ou peut-être que je ne sais pas comment utiliser la fonction bon bref j'ai trouvé une solution puisque mon code fonctionne bien sauf l'erreur qui s'affiche, j'ai mis @ devant la fonction qui a causé l'affichage de l'erreur comme ainsi et l'erreur ne s'affiche plus ;) :

//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);

ps:merci beaucoup pour votre aide :)
Commenter la réponse de dinfo