file_get_contents(): SSL operation failed with code 1 が発生した時の対処法


はじめに

PHPの「file_get_contents()」で、以下のエラーが発生した。

file_get_contents(): SSL operation failed with code 1
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed {"exception":"[object] (ErrorException(code: 0)

これは、自己証明書を利用しているサイトに対して実施した時に発生するエラーです。

開発環境などに対しては、自己署名で証明書を作成することが多いと思います。

中には、公開されているサイトも自己証明書利用の場合もあります。

 

対処方法

以下対処方法のサンプルソースです。

ここでは、meta要素のog:title情報を取得するサンプルです。


private function getUrl ($url) 
{
    $options['ssl']['verify_peer']=false;
    $options['ssl']['verify_peer_name']=false;
    $page_content = file_get_contents($url, false, stream_context_create($options));

    $dom_obj = new \DOMDocument();
    libxml_use_internal_errors( true );
    $dom_obj->loadHTML($page_content);
    libxml_clear_errors();  

    foreach($dom_obj->getElementsByTagName('meta') as $meta) 
    {
        if($meta->getAttribute('property')=='og:title'){ 
            $meta_val = $meta->getAttribute('content');
            return $meta_val;
        }
    }
}

 

最後に

自己証明書は対応しない場合は、try_catchでスキップしたりする処理をいれれば良いです。

是非参考にしてください。