从Web应用程序使用httpClient会导致错误(cakephp3 App On GCE)



我遇到了很大的麻烦,所以我希望你能帮助我。 我用cakephp3做了一个Web应用程序,并在GCE上运行它。 尝试使用 Http 客户端进行通信时,出现以下错误。

++++ 蛋糕 3.6.2 版 操作系统 CentOS7 - ++++

2018-06-20 17:14:19 Error: [CakeCoreExceptionException] fopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known
fopen(https:/XXXX): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known
Request URL: /XXX/?callback=jQuery33100918089472164082_1529482454011
Referer URL: https://{request_host}/XXX/
Stack Trace:
#0 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client/Adapter/Stream.php(252): CakeHttpClientAdapterStream->_open(Object(ZendDiactorosUri))
#1 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client/Adapter/Stream.php(82): CakeHttpClientAdapterStream->_send(Object(CakeHttpClientRequest))
#2 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client.php(430): CakeHttpClientAdapterStream->send(Object(CakeHttpClientRequest), Array)
#3 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client.php(399): CakeHttpClient->_sendRequest(Object(CakeHttpClientRequest), Array)
#4 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client.php(366): CakeHttpClient->send(Object(CakeHttpClientRequest), Array)
#5 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client.php(229): CakeHttpClient->_doRequest('GET', 'https://{request_host}', NULL, Array)
#6 /usr/local/apache/vhosts/{my_host}/htdocs/src/Controller/Api/XXXController.php(489): CakeHttpClient->get('https:/request_host}')
#7 /usr/local/apache/vhosts/{my_host}/htdocs/src/Controller/Api/XXXController.php(406): AppControllerApiXXXController->__hogeAction('XXX')
#8 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Controller/Controller.php(596): AppControllerApiXXXController->invite()
#9 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(120): CakeControllerController->invokeAction()
#10 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(94): CakeHttpActionDispatcher->_invoke(Object(AppControllerApiXXXController))
#11 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/BaseApplication.php(228): CakeHttpActionDispatcher->dispatch(Object(CakeHttpServerRequest), Object(CakeHttpResponse))
#12 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(65): CakeHttpBaseApplication->__invoke(Object(CakeHttpServerRequest), Object(CakeHttpResponse), Object(CakeHttpRunner))
#13 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Routing/Middleware/RoutingMiddleware.php(158): CakeHttpRunner->__invoke(Object(CakeHttpServerRequest), Object(CakeHttpResponse))
#14 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(65): CakeRoutingMiddlewareRoutingMiddleware->__invoke(Object(CakeHttpServerRequest), Object(CakeHttpResponse), Object(CakeHttpRunner))
#15 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Routing/Middleware/AssetMiddleware.php(88): CakeHttpRunner->__invoke(Object(CakeHttpServerRequest), Object(CakeHttpResponse))
#16 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(65): CakeRoutingMiddlewareAssetMiddleware->__invoke(Object(CakeHttpServerRequest), Object(CakeHttpResponse), Object(CakeHttpRunner))
#17 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Error/Middleware/ErrorHandlerMiddleware.php(98): CakeHttpRunner->__invoke(Object(CakeHttpServerRequest), Object(CakeHttpResponse))
#18 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(65): CakeErrorMiddlewareErrorHandlerMiddleware->__invoke(Object(CakeHttpServerRequest), Object(CakeHttpResponse), Object(CakeHttpRunner))
#19 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(51): CakeHttpRunner->__invoke(Object(CakeHttpServerRequest), Object(CakeHttpResponse))
#20 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Server.php(98): CakeHttpRunner->run(Object(CakeHttpMiddlewareQueue), Object(CakeHttpServerRequest), Object(CakeHttpResponse))
#21 /usr/local/apache/vhosts/{my_host}/htdocs/webroot/index.php(34): CakeHttpServer->run()
#22 {main}

我检查了 resolve.conf,但它是合流的。 因为它在我的本地主机上正常工作,所以我认为这是设置服务器和网络的问题。 如果你能帮助我,我很高兴。谢谢。

  • 查看 GCP 中的防火墙规则。确保允许端口 80、443 的入口流量。
  • 最后,尝试测试 GCE VM 实例内或 GCP 外部的 URL 连接和端口。以下是一些示例:

    $ curl http://[external-IP-vm-address]:80

    $ telnet localhost 80

    $ nmap <external-ip-vm-address>

    $ netstat -plant

  • 您还可以执行其他网络测试。你可以从Stackexchange查阅这个讨论线程。

最新更新