Я использовал Google API для сервиса Google Analytics. Первые 3 дня после этой реализации она работала нормально, но с 30 апреля 2015 года. Внезапно возникла проблема со следующей ошибкой. Я выполнил эту программу php через доступ к веб-странице с помощью Apache cron. Когда я захожу на страницу, возвращается ошибка 500 и
Журнал ошибок PHP;
Неустранимая ошибка PHP: необработанное исключение ‘Google_IO_Exception’ с
сообщение «Не удалось разрешить хост» account.google.com «в
/var/www/html/components/com_jumi/files/analytics/google-api-php-client-master/src/Google/IO/Curl.php:115\nStack
след: \ п # 0
/var/www/html/components/com_jumi/files/analytics/google-api-php-client-master/src/Google/IO/Abstract.php(136):
Google_IO_Curl-> ExecuteRequest (Object (Google_Http_Request)) \ п # 1
/var/www/html/components/com_jumi/files/analytics/google-api-php-client-master/src/Google/Auth/OAuth2.php(336):
Google_IO_Abstract-> makeRequest (Object (Google_Http_Request)) \ п # 2
/var/www/html/components/com_jumi/files/analytics/google-api-php-client-master/src/Google/Auth/OAuth2.php(308):
Google_Auth_OAuth2-> refreshTokenRequest (Array) \ п # 3
/var/www/html/components/com_jumi/files/analytics/google-api-php-client-master/get-pageview.php(52):
Google_Auth_OAuth2-> refreshTokenWithAssertion (Object (Google_Auth_AssertionCredentials)) \ п # 4
/var/www/html/components/com_jumi/files/analytics/google-api-php-client-master/get-pageview.ph
в
/var/www/html/components/com_jumi/files/analytics/google-api-php-client-master/src/Google/IO/Curl.php
по линии 115
Мой код для подключения Google API;
require_once dirname(__FILE__) . '/src/Google/autoload.php';
$client_email = '[email protected]';
$view_id = "xxx";
$private_key = @file_get_contents(dirname(__FILE__) . '/xxx.p12');
$client = new Google_Client();
$scopes = array("https://www.googleapis.com/auth/analytics.readonly");
if(isset($_SESSION["service_token"])){
$client->setAccessToken($_SESSION["service_token"]);
}
$credentials = new Google_Auth_AssertionCredentials($client_email,$scopes,$private_key);
$client->setAssertionCredentials($credentials);
if($client->getAuth()->isAccessTokenExpired()){
$client->getAuth()->refreshTokenWithAssertion($credentials);
}
$_SESSION["service_token"] = $client->getAccessToken();
...
я использовал эта библиотека. Я обновил это до последнего в 3 дня назад.
Я обнаружил похожие сообщения об ошибках при переполнении стека, но большинство из них вызвано проблемами с подключением к серверу «accounts.google.com», но мой сервер мог подключить его раньше. Также я проверил хост / nslookup тоже;
# nslookup accounts.google.com
Server: 210.157.3.4
Address: 210.157.3.4#53
Non-authoritative answer:
accounts.google.com canonical name = accounts.l.google.com.
Name: accounts.l.google.com
Address: 216.58.220.173
# host accounts.google.com
accounts.google.com is an alias for accounts.l.google.com.
accounts.l.google.com has address 216.58.220.173
accounts.l.google.com has IPv6 address 2404:6800:4004:812::200d
Больше всего меня беспокоит, почему вдруг произошла ошибка? несмотря на то, что я не изменил ни одного кода / библиотечных файлов, где я достиг успеха в соединении API раньше.
Тоже сомневаюсь проблема токена тоже, но в моем случае только 2 или 3 машины подключены API, так что это не должно быть пределом токена.
Я также проверил мой сервер нтп но это работает правильно на моем сервере.
Я надеюсь, что у кого-то были такие же проблемы, знают, как это исправить. Спасибо всегда
—дополнение 20150505—
Вчера я пытался не через веб-страницу, а через командный скрипт для доступа к файлу php, тогда api работал. До сих пор не понимаю, почему внезапно произошел сбой доступа к веб-странице, но сама проблема, похоже, решена.
Хрон перед
wget http://example.com/analytics-api?f=1
Крон после
php /var/www/html/components/com_jumi/files/analytics/google-api-php-client-master/get-pageview.php -f1
У меня была такая же проблема сегодня, так
Я просто отключаю брандмауэр, и он работает для меня
Я использую avg антивирус
Других решений пока нет …