PublicIP — це бібліотека PHP, яка швидко і надійно визначає публічну IP-адресу сервера. У цього пакету є налаштована конфігурація за замовчуванням, яка забезпечує найшвидших та найнадійніших провайдерів. Проте ви можете налаштувати та використовувати інших провайдерів:
use KnotsPHP\PublicIP\Finders\PublicIP;
use KnotsPHP\PublicIP\Finders\PublicIPv4;
use KnotsPHP\PublicIP\Finders\PublicIPv6;
$ipv4 = PublicIPv4::get(); // отримує вашу IPv4
$ipv6 = PublicIPv6::get(); // отримує вашу IPv6
$ipv4or6 = PublicIP::get(); // отримує або IPv4, або IPv6
Цей пакет надає два основні методи для отримання IP-адреси сервера, включаючи провайдери dig
та HTTP whoami. Якщо вам потрібен більш детальний контроль, ви можете визначити, який "fetcher" використовувати, і/або який DNS-провайдер:
use KnotsPHP\PublicIP\Enums\DnsProvider;
use KnotsPHP\PublicIP\Fetchers\DigFetcher;
use KnotsPHP\PublicIP\Finders\PublicIPv4;
$ipv4 = PublicIPv4::finder()
->addFetcher((new DigFetcher())
->from(DnsProvider::OpenDNS)))
->fetch();
// Безпосереднє використання Fetcher
$ipv4 = (new DigFetcher)
->from(DnsProvider::Cloudflare)
->fetch(IpVersion::v4);
Пакет також надає інтерфейс командного рядка (CLI) для отримання публічної IP-адреси поточної машини. Це може бути корисно під час налаштування додатків, коли потрібно знати IP-адресу для правильної конфігурації:
vendor/bin/publicip --ipv4
vendor/bin/publicip --ipv6
Дізнатися більше про цей пакет, отримати повні інструкції з встановлення та переглянути джерела коду можна на GitHub. Рекомендую також ознайомитися з документацією в README, щоб переглянути список провайдерів dig та підтримуваних HTTP whoami. Встановити цей пакет у вашому проєкті можна через Composer за командою:
composer require knotsphp/publicip
Особисто я маю alias у Bash, який використовую для швидкого отримання моєї публічної IP-адреси в командному рядку. Ніколи не знаєш, коли вона знадобиться для VPN або списку доступу. Це частина моїх dotfiles, яка дозволяє швидко отримувати мою IP-адресу через dig
:
alias ip='dig @resolver4.opendns.com myip.opendns.com +short'
alias ip6='dig @resolver1.ipv6-sandbox.opendns.com AAAA myip.opendns.com +short -6'
Ці alias я знайшов у відповіді на StackExchange.