在 PHP 中检测服务器名称

在 PHP 中检测服务器名称

我在负载均衡器后面有多个实例。是否可以在 PHP 中检测机器的名称(例如 ec2-XXX-XX-XXX-XXX.compute-1.amazonaws.com)以进行调试?我查看了 phpinfo(),它似乎没有任何特定于机器的信息。

答案1

您必须使用$host = system("hostname")或类似的,因为 PHP 似乎不会直接提供该信息。

IP 似乎更复杂一些。取决于他们如何设置,但你可以尝试

$config = system("ifconfig | grep \"inet addr\"");
preg_match("/(\d{1,3})(\.\d{1,3})/", $config, $matches);
$ip_addr = $matches[1];

答案2

如果我没记错的话,公共主机名实际上并不存在于服务器上的任何地方。它存储在EC2 的元数据,可以从任何 EC2 实例上的 169.254.169.254 获取。

$hostname = file_get_contents('http://169.254.169.254/latest/meta-data/public-hostname/');

答案3

你将获得主机名

$hostname = shell_exec("curl -s http://169.254.169.254/latest/meta-data/public-hostname");

如果你想要 IP 地址,那么使用

$IpAddress = shell_exec("curl -s http://169.254.169.254/latest/meta-data/public-ipv4");

答案4

这应该可以做到:

http://php.net/manual/en/reserved.variables.server.php

$myservername = $_SERVER['SERVER_NAME'];

相关内容