Как я нахожу IP-адрес своего сервера в PHP (CLI)

Можно использовать следующие регулярные выражения отдельно или путем объединения их в соединении ИЛИ выражении.

ValidIpAddressRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";

ValidHostnameRegex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$";

ValidIpAddressRegex соответствует допустимым IP-адресам и ValidHostnameRegex допустимые имена хоста. В зависимости от языка Вы используете \, придется оставить с \.

ValidHostnameRegex допустим согласно RFC 1123 . Первоначально, RFC 952 определил, что сегменты имени узла не могли запуститься с цифры.

http://en.wikipedia.org/wiki/Hostname

исходная спецификация имен узлов в RFC 952 , переданный под мандат, который маркировки не могли запустить с цифры или с дефиса и не должны заканчивать дефисом. Однако последующая спецификация ( RFC 1123 ) разрешенный имя узла маркирует для запуска с цифр.

Valid952HostnameRegex = "^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$";

34
задан Matthew Scharley 5 March 2012 в 12:20
поделиться

3 ответа

Вы можете получить имя хоста, используя gethostname

42
ответ дан 27 November 2019 в 16:09
поделиться

Если вы работаете с PHP <5.3, это может помочь (по крайней мере, в системах на базе * NIX):

 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:~$

Или, если вы не планируете делать это часто, возможно, это поможет работают (только не злоупотребляйте):

$ip = file_get_contents('http://whatismyip.org/');
14
ответ дан 27 November 2019 в 16:09
поделиться

Если ничего не помогает, вы всегда можете exec ipconfig или ifconfig, в зависимости от вашей платформы, и проанализировать результат.

3
ответ дан 27 November 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: