こんにちは、さるまりんです。
PHPのfile_get_contentsで別サーバーにあるファイルをダウンロードするプログラムを書いていました。
https://〇〇〇〇.com/images/△△△.png
をダウンロードすると言うシンプルなことです。
$file = file_get_contents("https://〇〇〇〇.com/images/△△△.png");
上記の様なコードで実現できるのですが、次の様なエラーが発生しました。
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
certificate verify failed
証明書確認のエラーです。これはサイトが無効な証明書を使っているときに出るのですが、それでもアクセスするときがあります。その場合このエラーを無視しなければなりません。
どうしましょう?
file_get_contentsで証明書エラーを無視
次のコードで実現できます。
$url = "https://〇〇〇〇.com/images/△△△.png";
$options['ssl']['verify_peer']=false;
$options['ssl']['verify_peer_name']=false;
$file = file_get_contents($url, false, stream_context_create($options));
証明書が無効でもアクセスする?と言うところに疑問はありますが、これでエラーは発生せずにダウンロードしたいファイルを取得することができます。
file_get_contents()はいろんな使い方ができます。POSTしたり、Basic認証を通してみたり、3つ目の引数でいろんなことをコントロールできそうです。
読んでくださってありがとうございます。
それではまた!