ComposerからLaravelを導入しようとしてOpenSSL周りのエラーで困った件

  • 28
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Composer経由でLaravelをインストールしようとして、Composerをcurlから取得する時に結構厄介なエラーに遭遇しましたので、対処法をシェアします。

自分はLaravelのインストール目的でしたが、Composerインストール時一般に使えるTIPSかと思います。

Download failed: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
file_get_contents(): Failed to enable crypto
file_get_contents(https://getcomposer.org/composer.phar): failed to open stream: operation failed

いろいろ調べて行き着いたのがComposerのissuesです。結構長いスレッドですが…。
Install fails because of getcomposer.org certificate verify failed · Issue #2798 · composer/composer · GitHub

結論から行きましょう。

OpenSSL(正確にはcurl)で使用するCAをダウンロード

wget http://curl.haxx.se/ca/cacert.pem
cp -v -f cacert.pem /full/path/to/certs/ca-bundle-curl.crt

php.ini から認識できるように設定

curl.cainfo=/full/path/to/ssl/certs/ca-bundle-curl.crt
openssl.cafile=/full/path/to/ssl/certs/ca-bundle-curl.crt

この設定をした状態でComposerを導入すればエラーは出ません。
解決するまで結構面倒でした…。

このcrtファイルはcurlのエラーを回避するためのものですので、本来のca-bundle.crtを上書きしないように注意して下さい。

参考までにFreeBSDをお使いの方は、pkgコマンド経由でphp-composerを導入するのが楽かと思います。

sudo pkg install php-composer