php - Google MyBusiness PHP Api OpenSSL SSL_connect: SSL_ERROR_SYSCALL
问题描述
我的部分代码是:
try {
$client = new Google_Client();
$client->setAuthConfig($credentials_file);
$client->setAccessType("offline");
$client->setIncludeGrantedScopes(true);
$client->addScope("https://www.googleapis.com/auth/plus.business.manage");
}catch(GuzzleHttp\Exception\ConnectException $e){
Connector::handleException($e); //just print $e->getMessage(); and die();
}catch(\Exception $e){
Connector::handleException($e); //just print $e->getMessage(); and die();
}
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
$connector = Connector::init($client);
require_once "views/index.php";
} else {
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
在views/index.php
我只是获取位置并将它们打印出来。
我运行我的“应用程序”php -S localhost:8000
几乎一切都很好,因为有时我会出错:
cURL error 35: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to mybusiness.googleapis.com:443 (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
和
cURL error 35: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to oauth2.googleapis.com:443 (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
我需要刷新网站几次,直到一切恢复正常。几天前一切都很好。有时它在第一次刷新后开始工作,有时需要 5 分钟。
为什么?我能以某种方式修复它吗?
解决方案
似乎 Google API 在使用 IPv6 时出现 curl 问题,因此在文件中:
vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
关于第 40 行,我添加了:
curl_setopt($easy->handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
它解决了问题!
推荐阅读
- macros - doxygen 无法正确解析宏
- winforms - 如何为 DataGridviewColumn 类型声明变量?
- python - 带有 seaborn 或 pyplot 的 Python 子图
- php - 如果这些是自定义字段中的字符串,如何对日期进行排序?
- c++ - 即使文件存在,如何修复 QFile 打开错误(未知错误)?
- python - 为什么原始类型的子类在 Python 中占用更多内存?
- reactjs - React-Adal 使用 POST 请求返回 401,但使用 GET 请求返回 200
- dart - How to get last picture taken by user/camera
- kentico - Kentico 11 - MediaFileInfoProvider.DeleteMediaFileInfo 未删除
- java - Map.Entry<> java