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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

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

Q&A

1回答

3661閲覧

Google CalenderのAPIを使おうとすると SSL: fatal protocol error が出てしまう。

退会済みユーザー

退会済みユーザー

総合スコア0

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

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

0グッド

0クリップ

投稿2014/11/20 09:40

はじめて質問させていただきます。
柳沼と申します。

PHPを触り始めて2年程度の初心者です。
わからないことばかりではありますが、お助け下さい。

Google Calender API を利用して祝日・振替休日の表示が可能なカレンダーを表示させようとしたところ、

file_get_contents() [function.file-get-contents]: SSL: fatal protocol error
のようなエラーが表示されてしまいました。

xamppを使ったローカル環境上では普通に表示できております。
allow_url_fopen は On になっておりました。

ローカルはPHP Version 5.5.11
サーバーはPHP Version 5.1.6
です。

また、ネット上で「OpenSSLの設定が・・・」のようなものもあったのでphpinfoでみたところ
【curl】
CURL support enabled
CURL Information libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5

【openssl】
OpenSSL support enabled
OpenSSL Version OpenSSL 0.9.8b 04 May 2006

というのがあるだけでした。

制限の厳しいレンタルサーバーのため、php.iniの設定などは行うことができません。

何卒宜しくお願い致します。

lang

1<?php 2 3print_r(get_holidays_this_month(2014,11)); 4 5 6function get_holidays_this_month($year, $month){ 7 // 月初日 8 $first_day = mktime(0, 0, 0, intval($month), 1, intval($year)); 9 // 月末日 10 $last_day = strtotime('-1 day', mktime(0, 0, 0, intval($month) + 1, 1, intval($year))); 11 $api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'; //←api_keyは取得、ローカルでの動作は確認できてます。 12 $holidays_id = 'outid3el0qkcrsuf89fltf7a4qbacgt9@import.calendar.google.com'; // mozilla.org版 13 //$holidays_id = 'japanese__ja@holiday.calendar.google.com'; // Google 公式版日本語 14 //$holidays_id = 'japanese@holiday.calendar.google.com'; // Google 公式版英語 15 $holidays_url = sprintf( 16 'https://www.googleapis.com/calendar/v3/calendars/%s/events?'. 17 'key=%s&timeMin=%s&timeMax=%s&maxResults=%d&orderBy=startTime&singleEvents=true', 18 $holidays_id, 19 $api_key, 20 date('Y-m-d', $first_day).'T00:00:00Z' , // 取得開始日 21 date('Y-m-d', $last_day).'T00:00:00Z' , // 取得終了日 22 31 // 最大取得数 23 ); 24 if ( $results = file_get_contents($holidays_url) ) { 25 $results = json_decode($results); 26 $holidays = array(); 27 foreach ($results->items as $item ) { 28 $date = strtotime((string) $item->start->date); 29 $title = (string) $item->summary; 30 $holidays[date('Y-m-d', $date)] = $title; 31 } 32 ksort($holidays); 33 } 34 return $holidays; 35}

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

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

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

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

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

guest

回答1

0

どうもそのエラーはサーバ(Google Calendar API?)側が通信を正しく終了して来ないときに出ることがあるようですね。
http://php.net/manual/ja/function.file-get-contents.php#refsect1-function.file-get-contents-notes
ここの警告の部分のようです。
この警告が出ても、実際には処理自体は正しくできていたりしないでしょうか?
できていないようであれば、警告表示を抑制する手順が必要になるかと思います。

投稿2014/11/20 12:37

TaMaMhyu

総合スコア1356

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

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

退会済みユーザー

退会済みユーザー

2014/11/21 00:21

ご回答ありがとうございます。 error_reporting(E_ALL ^ E_WARNING); を使用して表示の抑制も試してみたところ、データを取得できていないらしく真っ白画面になってしまいました。 別サーバーに同じソースでアップしたところきちんと表示されました。 PHP Version 5.3.3 【curl】【openssl】【Phar】 にOpenSSLについての記述があり、 【curl】の項目がだいぶ多くあり 【openssl】には OpenSSL Versionの代わりに ・OpenSSL Header Version ・OpenSSL Library Version の項目になっていました。
TaMaMhyu

2014/11/21 00:30

OpenSSLについては、OpenSSL support: enabledが出ていれば問題ないとは思いますが… ちなみに何度やっても同じエラーが出るのでしょうか?
退会済みユーザー

退会済みユーザー

2014/11/21 02:08

なるほど……実際に動かしたいサーバー(php5.16のもの)ですと、何度やっても同じエラーがでますね。 記事リンクありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問