外部 API からレスポンスがない
まさかこんなところが原因だとは思わず、24時刊無駄にしちゃった。 😥
php:5.4.7
Google Places API を利用しようと思ってコーディングしたところ
file_get_contents の戻り値が false になった。
API 問い合わせ先が https であるのに対して
php の openssl が ON になっていなかった。
- - ;extension=php_openssl.dll
- + extension=php_openssl.dll
file_get_contents がだめだったので、cURL も試してみたけどだめだった。
試しに要求 URL をブラウザに直接入力してみると
ちゃんとレスポンスが返ってきて、json 文字列が表示された。
Google Developer Console を見ると、API キーには4種類
サーバー キー、ブラウザ キー、Android キー、iOS キー
があるようで、サーバーサイドの場合は、サーバー キーが必要なんかと思い
これを取得、設定を変更したけど、ダメ。
サーバーサイドスクリプト内であろうが、ブラウザ直接入力であろうが
サーバー キーでも、ブラウザ キーでも、どちらでもレスポンスが返ってきた。
はた、と思いついて、マッサラのテストページを作り
当該箇所のみを記述して読み込んでみた。
- $url = sprintf( 'https://maps.googleapis.com/maps/api/place/textsearch/json?query=%s&sensor=false&key=%s', $word, $key );
- $json = file_get_contents( $url );
- echo $json;
すると、下記のような Warning が。
「file_get_contents(): Unable to find the wrapper」
Symfony でも、エラーを表示するように設定しないと時間の無駄だね。。。
で、Google 先生に質問したら、下記記事が一番上に表示された。
YAHOO! JAPAN 知恵袋:PHPでhttps://から始まるURLのオープンに…
こちらの回答に従って、extention を ON にしたところ、無事に解決した。