无法连接到www.googleapis.com端口443:网络无法访问

Rez*_*asi 3 php google-login symfony google-client

我正在尝试在我的网站中使用Google Client API在Symfony2中编写谷歌登录.我按照这里的说明进行操作,但是当我调用$ client-> authenticate($ code)时; 命令异常抛出告诉:
无法连接到www.googleapis.com端口443:网络无法访问有
什么问题?

le0*_*iaz 7

解决方案2(来自更新).它似乎是ipv6接口和curl与php的一些错误,所以另一个解决方案是在curl函数中设置appropiate选项,用你的PHP脚本中的ipv4连接到远程服务器

curl_setopt($ curl,CURLOPT_IPRESOLVE,CURL_IPRESOLVE_V4);


解决方案1.

同样的事情发生在我身上(通过将ip v4和主机名添加到/ etc/hosts文件中解决),正如@ hans-z在另一个回答评论中指出的那样,我尝试使用next命令来验证网络问题.

curl -v https://www.googleapis.com 
Run Code Online (Sandbox Code Playgroud)

事实证明它是随机的,只有十分之一的尝试curl命令可以连接到服务器,响应是这样的:("La red es inaccesible"意思是英文"network unreachable":))

$ curl -v https://www.googleapis.com
* Rebuilt URL to: https://www.googleapis.com/
* Hostname was NOT found in DNS cache
*   Trying 64.233.186.95...
*   Trying 2800:3f0:4003:c00::5f...
* connect to 2800:3f0:4003:c00::5f port 443 failed: La red es inaccesible
* Failed to connect to www.googleapis.com port 443: La red es inaccesible
* Closing connection 0
curl: (7) Failed to connect to www.googleapis.com port 443: La red es inaccesible
Run Code Online (Sandbox Code Playgroud)

成功的回应是:

curl -v https://www.googleapis.com
* Rebuilt URL to: https://www.googleapis.com/
* Hostname was NOT found in DNS cache
*   Trying 64.233.186.95...
*   Trying 2800:3f0:4003:c00::5f...
* Connected to www.googleapis.com (64.233.186.95) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using ECDHE-RSA-AES128-GCM-SHA256
* Server certificate:
*    subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=*.storage.googleapis.com
*    start date: 2015-04-08 14:12:01 GMT
*    expire date: 2015-07-07 00:00:00 GMT
*    subjectAltName: www.googleapis.com matched
*    issuer: C=US; O=Google Inc; CN=Google Internet Authority G2
*    SSL certificate verify ok.
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: www.googleapis.com
> Accept: */*
> 
< HTTP/1.1 404 Not Found
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: Fri, 01 Jan 1990 00:00:00 GMT
< Date: Tue, 21 Apr 2015 21:38:12 GMT
< Vary: X-Origin
< Content-Type: text/html; charset=UTF-8
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
* Server GSE is not blacklisted
< Server: GSE
< Alternate-Protocol: 443:quic,p=1
< Accept-Ranges: none
< Vary: Origin,Accept-Encoding
< Transfer-Encoding: chunked
< 
* Connection #0 to host www.googleapis.com left intact
Run Code Online (Sandbox Code Playgroud)

奇怪的消息是"在DNS缓存中找不到主机名",我使用谷歌DNS的4.4.4.4和8.8.8.8,所以我使用curl命令输出中的ipv4将该域添加到我的/ etc/hosts文件中解决了.

#/etc/hosts
...
64.233.186.95 www.googleapis.com
#DONT COPY THIS IP, USE THE ONE FROM YOUR CURL OUTPUT
...
Run Code Online (Sandbox Code Playgroud)


Han*_* Z. 3

看起来像是传出防火墙/代理/网络问题。您应该能够使用pingcurl从运行您的网站的计算机来验证这一点。