質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

8898閲覧

cURL error 6(Couldn't resolve host)を解決したい

Panda_Program

総合スコア12

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

2クリップ

投稿2018/04/24 11:57

LINE NotifyのAPIを使って通知を送りたい

下記のQiitaの記事を書くに当たり、LINEに通知を送る方法を調べました。
LINE Notifyを使って、PHPとcurlでLINEに通知を送る

その後、Guzzleというライブラリを使えばコードを短くかけることを知り、下記のように記述しました。

<?php require_once 'vendor/autoload.php'; use GuzzleHttp\Client; $uri = 'https://notify-api.line.me/api/notify'; $token = 'LINEトークン'; $message = 'Lineに通知を送ります'; $client = new Client(); $client->post($uri, [ 'headers' => [ 'Content-Type' => 'application/x-www-form-urlencoded', 'Authorization' => 'Bearer ' . $token ], 'form_params' => [ 'message' => $client->request('message', $message) ] ]);

しかし、エラーが出て処理が止まってしまいました。

エラー文

PHP Fatal error: Uncaught GuzzleHttp\Exception\ConnectException: cURL error 6: Could not resolve host: Line%E3_%AB%E9__%E7_%A5%E3__%E9__%E3__%E3_%BE%E3__ (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in /Users/username/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:185 Stack trace: #0 /Users/username/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(149): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 /Users/username/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(102): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 /Users/username/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #3 /Users/username/vendor/guzzlehttp/guzzle/src/Handler/Proxy.ph in /Users/username/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 185

cURL error 6(Couldn't resolve host. The given remote host was not resolved.)という記述が含まれていたので、対処法を調べました。

しかし、cat /etc/resolv.confを実行して表示されるnameserverのIPアドレスを使ってpingコマンドを叩いて見ても、どれも応答がありました。

また、下記コマンドの場合、ちゃんと通知が届きます。
curl -X POST -H 'Authorization: Bearer <LINEトークン>' -F 'message=foobar' https://notify-api.line.me/api/notify

ここで詰まってしまったので、今回質問致しました。
足りない情報等あれば追記します。よろしくお願いします。

環境
macOS High Sierra 10.13.4
PHP 7.1.14
Guzzle 6.3

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました!

'form_params' => [ 'message' => $client->request('message', $message) ]

この部分を

'form_params' => [ 'message' => $message ]

とすると、うまく送信されました!

投稿2018/04/24 12:14

Panda_Program

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問