【Windows】Composerのinstallコマンドでエラーが出る

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認証系なのは確かなんだろうけど、最新の証明書を読み込ませてもダメ。

吐きそうになりながら調べ続けていたら、最終的に、以下の対応で解決できた。

解決策

  1. Gitの再インストール
  2. PHPの再インストール
  3. 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の制限で引っかかってる??

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のSEを経て、独立。 ここ数年はWEB以外の仕事をしていたため、割と本気で勉強中。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください