No.434


【PHP】file_get_contentsで証明書エラー

【PHP】file_get_contentsで証明書エラー

APIがOpenSSLエラーでとまってしまった…

 便利な便利なfile_get_contents()関数。
 ファイルだろうがURLだろうが差を意識せずにデータを取得できるので、多用してる人も多いだろう。

 入出力はストリームラッパーが勝手にやってくれるので普段意識することは無いのだが、処理がブラックボックスがゆえ問題が起きるとやっかいではある。


OpenSSLのサーバー証明書エラー

 ある日を境に下記のようなメッセージが表示されるようになるケースがある。

file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:

 今まで稼働していたものが突然こうなったのなら、それはほぼ間違いなくサーバーのルート証明書の期限切れによるものと考えていい。

 サーバーのルート証明書を更新するか

yum update ca-certificates

 やむを得ない状況で更新できないときは証明書を無視することで回避できる。(おすすめはできないが)

$context = stream_context_create([
  'ssl' => [
    'verify_peer' => false,
    'verify_peer_name' => false,
  ]
]);

$string = file_get_contents(リソース, false, $context);