Olá Camilo, bom dia,
Hoje tivemos um problema com instâncias executadas no AWS com relação à inicialização delas. Depois de investigar descobri o seguinte erro no arquivo de log:
2015/09/21 07:00:18 [error] 1912#0: *5094449 FastCGI sent in stderr: "PHP message: PHP Warning: file_get_contents(http://ipinfo.io/10.248.53.241/json): failed to open stream: HTTP request failed! HTTP/1.1 504 GATEWAY_TIMEOUT^M in /var/www/titan/class/GoogleMaps.php on line 19" while reading response header from upstream, client: 10.248.53.241, server: localhost, request: "GET /contafacil/titan.php?target=body& HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "pontofacil.net", referrer: "http://pontofacil.net/contafacil/titan.php"
O que percebi era que o endereço verificado (10.248.53.241) é um endereço local e não de internet com isso o serviço ipinfo não estava conseguindo resolver ele.
Fiz a seguinte alteração no arquivo GoogleMaps e resolveu:
class GoogleMaps
{
public static function geolocate ($ip = FALSE)
{
if ($ip === FALSE){
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']) && $_SERVER['HTTP_CLIENT_IP'])
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']) && $_SERVER['HTTP_X_FORWARDED'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']) && $_SERVER['HTTP_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']) && $_SERVER['HTTP_FORWARDED'])
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'])
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'DESCONHECIDO';
$ip = $ipaddress;
}
....
}
O que deve estar acontecendo é que para endereços locais, como é o caso da VM do AWS, não é possível obter a geolocalização e com esse código acima pretende-se recuperar o endereço IP externo do cliente que está acessando aplicação e não seu endereço de solicitação.
Analise a situação e faça as alterações que julgar necessárias para sanar isso, pois se isso não funcionar bem a aplicação fica muito lenta quando este serviço
INFO.IO não funciona corretamente.
Atenciosamente,
Maxwell Sampaio
Mestre em Ciência da Computação pela FACOM/UFMS