前提・実現したいこと
cakephp3でWebアプリケーションを作り、GCE上で動かしています。
HttpClientを利用して、外部のAPIを叩こうとした時に以下のエラーが発生しました。
発生している問題・エラーメッセージ
2018-06-20 17:14:19 Error: [Cake\Core\Exception\Exception] 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): Cake\Http\Client\Adapter\Stream->_open(Object(Zend\Diactoros\Uri)) #1 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client/Adapter/Stream.php(82): Cake\Http\Client\Adapter\Stream->_send(Object(Cake\Http\Client\Request)) #2 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client.php(430): Cake\Http\Client\Adapter\Stream->send(Object(Cake\Http\Client\Request), Array) #3 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client.php(399): Cake\Http\Client->_sendRequest(Object(Cake\Http\Client\Request), Array) #4 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client.php(366): Cake\Http\Client->send(Object(Cake\Http\Client\Request), Array) #5 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Client.php(229): Cake\Http\Client->_doRequest('GET', 'https://{request_host}', NULL, Array) #6 /usr/local/apache/vhosts/{my_host}/htdocs/src/Controller/Api/XXXController.php(489): Cake\Http\Client->get('https:/request_host}') #7 /usr/local/apache/vhosts/{my_host}/htdocs/src/Controller/Api/XXXController.php(406): App\Controller\Api\XXXController->__hogeAction('XXX') #8 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Controller/Controller.php(596): App\Controller\Api\XXXController->invite() #9 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(120): Cake\Controller\Controller->invokeAction() #10 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(94): Cake\Http\ActionDispatcher->_invoke(Object(App\Controller\Api\XXXController)) #11 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/BaseApplication.php(228): Cake\Http\ActionDispatcher->dispatch(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #12 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Http\BaseApplication->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner)) #13 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Routing/Middleware/RoutingMiddleware.php(158): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #14 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\RoutingMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner)) #15 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Routing/Middleware/AssetMiddleware.php(88): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #16 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\AssetMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner)) #17 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Error/Middleware/ErrorHandlerMiddleware.php(98): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #18 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Error\Middleware\ErrorHandlerMiddleware->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response), Object(Cake\Http\Runner)) #19 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Runner.php(51): Cake\Http\Runner->__invoke(Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #20 /usr/local/apache/vhosts/{my_host}/htdocs/vendor/cakephp/cakephp/src/Http/Server.php(98): Cake\Http\Runner->run(Object(Cake\Http\MiddlewareQueue), Object(Cake\Http\ServerRequest), Object(Cake\Http\Response)) #21 /usr/local/apache/vhosts/{my_host}/htdocs/webroot/index.php(34): Cake\Http\Server->run() #22 {main}
該当のソースコード
(cakePHPの公式にあるサンプルプログラムが動きません)
php
1use Cake\Http\Client; 2$http = new Client(); 3$response = $http->get('http://example.com/test.html'); 4
試したこと
localhostでは動いています。
もともとSendGridのAPIをphp公式ライブラリを使おうと思いlocalhostでテストして問題なかったので、GCEにアップしました。アップ後SendGridが正しく利用できないので掘り下げて行ったところ、HttpClientの時点でうまく行ってなさそうでした。
ローカルでは動いているので、ソースは問題ないと考えています。
サーバあるいはネットワークの部分だと考えています。
GCE内でcurlを使ってAPIを叩くとうまくいきます。
補足情報(FW/ツールのバージョンなど)
cakephp3のバージョンは3.6.2
OSはcentOS7
です。
お忙しいところお手数ですが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。