ip address - remoto - Cómo encuentro la dirección IP de mi servidor en PHP(CLI)
obtener el nombre del equipo cliente javascript (5)
Puede obtener el nombre de host usando gethostname
Aparte de lo obvio (localhost, 127.0.0.1), ¿tiene PHP (interfaz de línea de comando) un mecanismo para descubrir la IP de la computadora en la que se ejecuta el script?
$_SERVER[*]
no funcionará, ya que no es una aplicación web; este es un script de línea de comandos.
TIA
Sé que esta es una pregunta bastante antigua, pero no parece haber una respuesta definitiva (en la medida en que uno es posible). He tenido la necesidad de determinar este valor, tanto en los cuadros * NIX como en Win X cajas. 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];
}
}
}
Si está trabajando con PHP <5.3, esto puede ser útil (en sistemas basados en * NIX al menos):
mscharley@S04:~$ cat test.php
#!/usr/bin/env php
<?php
function getIPs($withV6 = true) {
preg_match_all(''/inet''.($withV6 ? ''6?'' : '''').'' addr: ?([^ ]+)/'', `ifconfig`, $ips);
return $ips[1];
}
$ips = getIPs();
var_dump($ips);
mscharley@S04:~$ ./test.php
array(5) {
[0]=>
string(13) "72.67.113.141"
[1]=>
string(27) "fe80::21c:c0ff:fe4a:d09d/64"
[2]=>
string(13) "72.67.113.140"
[3]=>
string(9) "127.0.0.1"
[4]=>
string(7) "::1/128"
}
mscharley@S04:~$
O bien, si no prevé hacerlo a menudo, quizás esto funcione (simplemente no lo abuse):
$ip = file_get_contents(''http://whatismyip.org/'');
Si todo lo demás falla, siempre puede exec ipconfig o ifconfig, dependiendo de su plataforma, y analizar el resultado.
intente esto, debe devolver la dirección IP del servidor
$host= gethostname();
$ip = gethostbyname($host);