so che questa è una domanda piuttosto vecchio, ma ci non sembra t o essere una risposta definitiva (nella misura in cui è possibile). Ho avuto bisogno di determinare questo valore, sia su * NIX box che su Win X box. Anche da uno script eseguito CLI e uno script non CLI. La seguente funzione è la migliore che mi sia venuta in mente, che si basa su concetti diversi di cui le persone hanno parlato nel corso degli anni. Forse può essere di qualche utilità:
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];
}
}
}
fonte
2011-06-06 19:00:42
Grazie - è stato fantastico: la mia soluzione era: getHostByName (getHostName()) ; – ChronoFish
È una soluzione 5.3 - ma per fortuna sto eseguendo 5.3 – ChronoFish
C'è un commento in fondo alla pagina per <5.3. –