我在负载均衡器后面有多个实例。是否可以在 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'];