ComposerをWindowsにインストールし、パッケージをinstallしようとした際、以下のエラーが出た。
composer global require squizlabs/php_codesniffer=* : … Downloading (failed) Downloading (failed) Downloading (failed) … OpenSSL Error messages: :
GitHubのリポジトリからのダウンロードに失敗しているよう。
結構詰まったので、原因と対策をメモしておく。
composer diagnoseで原因調査
まず診断コマンドを実行。
composer diagnose
すると、以下のような結果に。
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: FAIL
[Composer\Downloader\TransportException] The "https://api.github.com/rate_limit" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
Failed to enable crypto
failed to open stream: operation failed
Checking disk free space: OK
:
ここで気になるエラーを抜粋してみる。
tls_process_server_certificate:certificate verify failed
どうやらSSL認証で躓いているエラーみたい。
調べてみると、クライアント側のルート証明書の有効期限切れとか出てきたが、対策を色々試してもエラーが消えない…。
curlコマンドは-kオプションを付ければ通るのでSSL認証系なのは確かなんだろうけど、最新の証明書を読み込ませてもダメ。
吐きそうになりながら調べ続けていたら、最終的に、以下の対応で解決できた。
解決策
- Gitの再インストール
- PHPの再インストール
- Composerの再インストール
Gitの再インストール
既にインストールされていたら、再インストール。
入ってなければインストールして、PC再起動する。
PHPの再インストール
まず、Composerに読み込ませていたPHPをガサッと削除。
再度PHPをインストールし直す。
①関係あるかは不明だが、この時、パスを少し変えた。
(C:\php\php7.2.9 → C:\php\php72)
②これも関係あるかは不明だが、環境変数Pathに上記インストールフォルダを通した。
ここで一度PCを再起動し、php -vが通ることを確認。
Composerの再インストール
次にComposerをアンインストール。
そして、もう一度Composerをインストールし、PCを再起動。
その後、composer diagnoseを実行すると、正常に動作するようになった!
この後、①と②の手順をスキップして検証してみたが、スキップしてもエラーは再現しなかったので、フォルダ名や環境変数の問題ではなさそう?
結局、根本的な原因は分からなかったが、同じように躓いているケースは上記で解決できることもあるらしい。
もやもや。
追記:
そもそも、Git for Windowsが入ってなければ、ずっとエラーになる。
Git for Windowsの再インストールも上記に追加しておく。
追記:
どうやら、Vagrantをインストールしvagrant upした際、SSHのprivate keyエラーになると、以降、認証エラー状態となることが分かった。
VagrantのSSHエラーをなくさないとダメっぽい。
追記:
他のPCで同じ手順やってもエラーにならない。
PC固有の問題?まさか本当にGitの制限で引っかかってる??