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

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

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

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

1回答

3183閲覧

XAMPP環境でfile_get_contents()を使用したい場合はどうするのでしょうか?

moitaro

総合スコア443

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2018/11/22 09:07

お世話になっております。

http://shop-pro.blogspot.com/2014/03/api-2.html

auth.php
を動作させようとしております。

ですが
http://localhost/php_test/blogspot/auth.php

https://api.shop-pro.jp/oauth/applications
からアクセスすると

Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in C:\xampp\htdocs\php_test\blogspot\auth.php on line 53 Warning: file_get_contents(): Failed to enable crypto in C:\xampp\htdocs\php_test\blogspot\auth.php on line 53 Warning: file_get_contents(https://api.shop-pro.jp/oauth/token): failed to open stream: operation failed in C:\xampp\htdocs\php_test\blogspot\auth.php on line 53

と言われました……

$response_body = file_get_contents($token_url, false, $context);

の所なのでコチラがよろしくないのは理解しているのですが
XAMPP環境でコチラを解決する方法をご存知な方はご助力頂けないでしょうか?

お忙しい中大変申し訳無いのですが上記お問い合わせいたします。

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

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

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

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

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

guest

回答1

0

SSLの警告については「SSL operation failed with code 1」で検索すれば色々と対処法が出て来るので、何を試したか記載してください。

それはそれとして、localhostは「自分のPC」を指してます。
第三者(今回はカラーミーAPI)に「ウチのPCにアクセスして」とだけ言われても「それどこだよ」ってなりますよね。
なのでSSLの問題がクリア出来ても、リダイレクト出来ないことになるので結局エラーが出ると思います。

XAMPPのまま実行する場合、通常は自分のIPアドレスを指定します。IPアドレスはネット上の住所に当たるので、それを教えれば辿り着けます。
ただし、PCによってはその他アクセス可能にする設定が必要かもしれません。この辺は「XAMPP 外部アクセス」等で検索してください。

投稿2018/11/27 06:11

sakura_hana

総合スコア11427

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

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

sakura_hana

2018/11/27 06:16

本題とずれたかもしれないので補足すると、 ・XAMPPからhttpsへアクセス:「SSLの証明書チェックは不要だよ」という命令にする必要がある ・httpsからXAMPPへアクセス:上記に加えて、「アクセス先」を明示する必要がある(localhostではダメ) ということです。
moitaro

2018/11/27 08:47

sakura_hana様 コメントありがとうございます。 >XAMPPからhttpsへアクセス:「SSLの証明書チェックは不要だよ」という命令にする必要がある の方法が不明なのです…… https://techacademy.jp/magazine/2942 こちらかな…… メモ失礼します。
sakura_hana

2018/11/27 10:05

そちらのサイトは「XAMPPにSSLを設定する方法」ですね。 「SSLの証明書チェックを行わない方法」とは調べている内容が異なるので、そりゃ方法が不明なのは当然かと。 私はそもそも「SSL operation failed with code 1」で検索しろと回答しました。 (私の環境だと)検索結果として以下のサイトが出ます。 https://qiita.com/izanari/items/f4f96e11a2b01af72846 https://qiita.com/yousan/items/dc2cc789dcb0f07a61dc 私も検証した訳ではないのと、上のサイトのやり方だと今回は既に「$context」がfile_get_contentsの第三引数に設定されているので、上手いことマージして上手くいくか試してみてください。 おまけ:どうして「SSLの証明書チェックを行わない方法」が必要だと分かるのか。 まずmoitaroさんが見た記事の最後に > SSL通信になってるけど、証明書がないと警告が出るんだよ。SSL通信は単に仕組みなんだけど、本当に該当のサーバとデータを送受信しているっていう保証がなかったりするんだ。そのために証明書が必要なんだよね。 とあります。つまりSSLには証明書が必要(超意訳)と分かります。 改めてPHPからの警告メッセージを見てみると、「certificate verify failed(=証明書検証に失敗しました)」と出ています。 つまり「証明書の検証ができない」か「検証した結果失敗している」のどちらかが起こっていると考えられます。 最後に、試しに「SSL operation failed with code 1」をググると送信先の証明書チェックを行わないと思しき対処方法が出て来ます。 なので『単にSSL通信にするだけではダメで、(証明書を設定するか、)通信側で「SSLの証明書チェックは不要だよ(=証明書が無くてもいいよ)」と命じる必要がある』と判断出来るわけです。 ちなみに「http://〜」にアクセスすると、SSLの設定がされていてもSSLではない通信で繋がります。 SSLで繋げたかったら「https://〜」(pと:の間にsが入る)というURLにする必要があります。 (※「.htaccess」等でリダイレクト設定をしている場合はこの限りではない)
moitaro

2018/11/28 01:21

度々のご返答痛み入ります。 仰るように >通信側で「SSLの証明書チェックは不要だよ(=証明書が無くてもいいよ)」と命じる必要がある』 上記の方法を調べてみます。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問