Je sais que c'est une question assez vieux, mais il ne semble pas t o être une réponse définitive (dans la mesure du possible). J'ai eu besoin de déterminer cette valeur, à la fois sur les boîtes * NIX et sur les boîtes Win X. Aussi à partir d'un script exécuté par CLI ainsi que d'un script non-CLI. La fonction suivante est la meilleure que j'ai trouvée, qui emprunte sur différents concepts dont les gens ont parlé au cours des années. Peut-être qu'il peut être utile:
function getServerAddress() {
if(isset($_SERVER["SERVER_ADDR"]))
return $_SERVER["SERVER_ADDR"];
else {
// Running CLI
if(stristr(PHP_OS, 'WIN')) {
// Rather hacky way to handle windows servers
exec('ipconfig /all', $catch);
foreach($catch as $line) {
if(eregi('IP Address', $line)) {
// Have seen exec return "multi-line" content, so another hack.
if(count($lineCount = split(':', $line)) == 1) {
list($t, $ip) = split(':', $line);
$ip = trim($ip);
} else {
$parts = explode('IP Address', $line);
$parts = explode('Subnet Mask', $parts[1]);
$parts = explode(': ', $parts[0]);
$ip = trim($parts[1]);
}
if(ip2long($ip > 0)) {
echo 'IP is '.$ip."\n";
return $ip;
} else
; // TODO: Handle this failure condition.
}
}
} else {
$ifconfig = shell_exec('/sbin/ifconfig eth0');
preg_match('/addr:([\d\.]+)/', $ifconfig, $match);
return $match[1];
}
}
}
Merci - c'était génial: Ma solution était: getHostByName (getHostName()) ; – ChronoFish
Il s'agit d'une solution 5.3 - mais heureusement, je suis en cours d'exécution 5.3 – ChronoFish
Il y a un commentaire au bas de la page pour <5.3. –