saber remoto obtener nombre gethostname equipo como cliente ip-address php

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);