使用 PHP 获取服务器的公共 IP 地址
PublicIP 是一个 PHP 库,可以可靠快速地获取服务器的公共 IP 地址。此软件包具有坚定的默认配置,可为你提供最快、最可靠的提供者(Provider)。当然,你也可以配置和使用不同的提供者:
use KnotsPHP\PublicIP\Finders\PublicIP;
use KnotsPHP\PublicIP\Finders\PublicIPv4;
use KnotsPHP\PublicIP\Finders\PublicIPv6;
$ipv4 = PublicIPv4::get(); // returns your IPv4
$ipv6 = PublicIPv6::get(); // returns your IPv6
$ipv4or6 = PublicIP::get(); // returns either IPv4 or 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();
// Use the Fetcher directly
$ipv4 = (new DigFetcher)
->from(DnsProvider::Cloudflare)
->fetch(IpVersion::v4);
此软件包还提供了一个命令行界面(CLI)来获取当前计算机的公共 IP。在安装命令期间,这可能很有用,因为你需要知道 IP 地址才能正确配置应用:
vendor/bin/publicip --ipv4
vendor/bin/publicip --ipv6
可以了解有关此软件包的更多信息,获取完整的安装说明,并在 GitHub 上查看源代码。我还建议浏览自述文档,以获取 dig`提供者列表以及支持的 HTTP whoami 提供者。你可以通过 Composer 将此软件包安装到项目中,方法如下:
composer require knotsphp/publicip
Bonus
我个人有一个 Bash 别名,用于在命令行上快速获取我的公共 IP 地址。你永远不知道什么时候需要使用你的 IP 进行 VPN 或安全列表访问。它是我的点文件的一部分,提供了一种通过 dig
访问我的 IP 的快速方法:
alias ip='dig @resolver4.opendns.com myip.opendns.com +short'
alias ip6='dig @resolver1.ipv6-sandbox.opendns.com AAAA myip.opendns.com +short -6'