macOS SierraにしたらPHPのsimplexml_load_file()でHTTPS GET失敗

PHPのsimplexml_load_file()でflickrのAPI(https)にGETリクエストを投げてXMLを取ってくるPHPのスクリプトを動かしているのだが、これが macOS Sierraにした途端動かなくなった。


SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

みたいなのが出てる。とりあえずパッと調べて出てきた情報としては
PHP on macOS Sierra can’t access SSL data – andrewyager.com

  • file_get_contents() など libssl に依存してるやつがダメ
  • libCURLは大丈夫

ということなので、とりあえずの対処として
simplexml_load_file() をやめて、

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HTTPGET, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$xmlstr = curl_exec($curl);
curl_close($curl);
$res = new SimpleXmlElement($xmlstr);

こんなのに書き換えた。一応動いた。

今すぐ使えるかんたん macOS Sierra 完全ガイドブック 今すぐ使えるかんたん macOS Sierra 完全ガイドブック
リブロワークス

技術評論社 2016-10-18
売り上げランキング : 467024

Amazonで詳しく見る by G-Tools

Copied title and URL