Problème connection WMI en php après hébergement

Résolu
Kaioshin12 Messages postés 7 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 24 août 2011 - 24 août 2011 à 12:56
 gpsa1 - 18 mai 2013 à 20:16
Bonjour à tous, j'espère être dans la bonne partie.

Voilà, je suis en train de me faire un petit utilitaire en php et WMI me permettant d'obtenir différentes informations sur mon PC (disque dur, OS, mémoire, carte graphique...) un peu comme Everest ou SIW.

J'ai donc ma fonction php avec ce code qui me permet d'obtenir les informations
$objLocator = new COM("WbemScripting.SWbemLocator");
$objService = $objLocator->ConnectServer();


$objWEBM = $objService->Get("Win32_DiskDrive");
//Le reste c'est le traitement, pas de soucis


Lorsque je lance ma page web en local (sous WampServer) : http://localhost/MyComputer/index.php, tout fonctionne très bien MAIS quand j'ai voulu héberger ma page chez SFr par exemple pour que je puisse l'exécuter depuis n'importe quel ordinateur, j'ai cette erreur : Fatal error: Class 'COM' not found in /var/www/m/my/myc/mycomputer.perso.sfr.fr/public_html/WMI.php on line 6

WMI.php :
function GetWMI($ClassWin32)
{	
$objLocator = new COM("WbemScripting.SWbemLocator");
$objService = $objLocator->ConnectServer();


$objWEBM = $objService->Get($ClassWin32);
$objProp = $objWEBM->properties_;
$i=0;
foreach($objProp as $name)
{
$arrProp[$i]=$name;
$i++;
}

$objWEBMCol = $objWEBM->Instances_();
$i=0;
foreach($objWEBMCol as $name)
{
$arrWEBMCol[$i]=$name;
$i++;
}

foreach($arrWEBMCol as $objItem)
{
reset($arrProp);
$arrInstance = array();
foreach($arrProp as $propItem)
{
eval("\$value = \$objItem->" .$propItem->Name .";");
if(trim($value) != "")
{
$arrInstance[$propItem->Name] = trim($value);
}
}

foreach($arrInstance as $cle=>$valeur)
{
switch($ClassWin32)
{
case "Win32_DiskDrive":
$valeur=GetDiskDriveDetails($cle,$valeur);
break;
case "Win32_OperatingSystem":
$valeur=GetOSDetails($cle,$valeur);
break;
default:
break;
}
echo $cle.' : '.$valeur.'
';
}	
echo '
';
}
}


Je ne comprends pas pourquoi ça marche en local et pas une fois hébergé ?
Je vous remercie d'avance pour votre aide.

7 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
24 août 2011 à 18:06
Salut,

Je n'en suis pas certain mais à mon avis, si tu es en mutualisé, ces fonctionnalités (accès aux données du disque, mémoire, etc ...) ne seront pas dispo.
... reste à investir dans un dédié


Cordialement,

Kohntark -
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
24 août 2011 à 13:29
Bonjour,

A vérifier, mais avec Linux, je ne pense pas que COM soit dispo, donc tu développes surement sur Windows en local et Linux en distant, d'où l'erreur.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
0
cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
24 août 2011 à 13:33
Bonjour,

+1 pour NHenry et la vérif: http://fr2.php.net/manual/fr/com.requirements.php

bonne après midi
0
Kaioshin12 Messages postés 7 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 24 août 2011
24 août 2011 à 17:35
Re bonjour,

Merci pour vos réponse rapide.

Si je comprends bien, en local je suis bien sous Windows donc pas de soucis, COM est bien trouvé.
En revanche une fois hébergé, COM n'est pas trouvé car le serveur d'hébergement chez SFR (puisque je l'ai pris comme exemple) est sous linux.

Donc même si j'utilise le même ordi et j'ouvre les 2 pages, une en local et une depuis l'hébergement, seule la première marchera ?

Je ne peux donc pas héberger le site ? y a-t-il un moyen d'accéder au COM de l'ordi qui ouvre la page ou bien ma page ne pourra s'afficher correctement que en local ??

Encore merci à vous !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kaioshin12 Messages postés 7 Date d'inscription samedi 6 mars 2010 Statut Membre Dernière intervention 24 août 2011
24 août 2011 à 18:14
Ok je comprends !! Tant pis je ne pourrais pas l'héberger alors !!

Merci pour vos réponses !!

bon courage !!
0
alvinemambele Messages postés 72 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 31 mai 2013 15
29 août 2011 à 18:55
ton idée est bonne, mais il y a des astuces qui p t'aide :
1.veuillez aussi voir le langager qui agit du côté Client aulieu de la faire du côté serveur;
2. dans ton script php veuillez veirifier l'OS avant d'exécuter la suite de code.
bne chance!


Un orateur trop long est comme une horloge qui sonne les minutes!
0
j'aimerai bien de l'aide SVP
j'ai un site web ,,, et j'aimerai utiliser un fichier php
page.php (pour visiteur)
le code PHP : <?
include ("ip_track.php");
?>
ip_track.php (hébérger )
le code :
<?php
// Nom du fichier des logs
$fichier="ip-track.txt";
$fp=fopen("$fichier","a");
// Donne la date et l'heure française
$Jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
$Mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
$date = $Jour[date("w")]." ".date("d")." ".$Mois[date("n")]." ".date("Y");
$heure = gmdate("H \h i", mktime(date("H")+1,date("i")));
$fsz=filesize("$fichier");
// Récupère l'IP et le FAI du visiteur (même si proxy)
$ip_visiteur = (getenv("HTTP_X_FORWARDED_FOR") ? getenv("HTTP_X_FORWARDED_FOR") : getenv("REMOTE_ADDR"));
$fai_visiteur = gethostbyaddr("$REMOTE_ADDR");
// Reccupere le port
$port = $_SERVER['REMOTE_PORT'];
fseek($fp,$fsz);
// Reccuperer le login
$login=$_SERVER['PHP_AUTH_USER'];
// Reccupere données navigateur
$referer = getenv("HTTP_USER_AGENT");
// Enregistre les données
fputs($fp,"Le: $date à $heure\n | IP: $ip_visiteur | Port: $port | Login: $_SERVER | FAI du visiteur: $fai_visiteur | Navigateur: $referer");
fclose($fp);
// Infos perso
$email="monmail@monsite.com";
$titre="GPSA-Track Visiteurs | Nouveau visiteur | Info";
$messag="Un visiteur vient de passer sur notre site.

SECURITE INFORMATIQUE
Infos du concerné :
- Le : $date à $heure
- IP : $ip_visiteur
- Port : $port
- Login : $_SERVER
- FAI : $fai_visiteur
- Navigateur: $referer
Fin d'informations.";
?>


afin de pouvoir identifier toutes les visiteurs dans le site.
qui me donne les infos du visiteur comme :
identification du processeur (numero de serie usine )
identification disque dure (numero de serie ou mac adresse)
identification routeur (adresse mac outeur + adresse mac carte réseau)


cvfaf23@gmail.com merci pour l'aide
0
Rejoignez-nous