sé que esto es una pregunta bastante antiguo, pero no parece t o ser una respuesta definitiva (en la medida en que sea posible). He tenido la necesidad de determinar este valor, tanto en cuadros * NIX como en cuadros de Win X. También desde un script CLI ejecutado, así como un script que no es CLI. La siguiente función es la mejor que he encontrado, que toma prestados diferentes conceptos de los que la gente ha hablado a lo largo de los años. Tal vez puede ser de alguna utilidad:
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];
}
}
}
Gracias - esto fue genial: Mi solución fue: getHostByName (getHostName()) ; – ChronoFish
Es una solución de 5.3, pero afortunadamente ejecuto 5.3 – ChronoFish
. Hay un comentario en la parte inferior de la página para <5.3. –