ここ1年ぐらいでしょうか?
たびたびPHPであれこれ実装するためにcomposerを使うことがありました。
で、そのたびに一発でcomposerがインストールできなくて、ちょっと時間とられるんですよね、大したことではないんですが。。。
ただ何度もエラーに引っかかるのも良くないと思うので、今回重い腰を上げ、インストールの手順と、トラブルシューティングをまとめようと思います。
目次
composerとは?
「PHPライブラリの依存関係を整理してインストールを簡便化してくれるコマンド」
という理解で良いと思います。
例えば
「PHPでExcelを操作したいけど必要なライブラリ、依存関係がわからない!」
というときに、コマンド一発で依存関係を考慮されたライブラリ~ソース一式をインストールできるようになります。
※インストールといっても必要ライブラリのダウンロードみたいな理解でいますが
まあ詳しい内容はwikipediaを見てほしい!
composerのインストール手順
#composerセットアップ用のファイルをダウンロード
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
#ハッシュ値をチェック(Installer verifiedならOK、Installer corruptならNG)
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
#composerコマンドのインストール
php composer-setup.php
#composerセットアップ用のファイルを削除
php -r "unlink('composer-setup.php');"
#実行コマンドディレクトリに移動 ※移動後composerコマンドで実行が可能に
sudo mv composer.phar /usr/local/bin/composer
※バージョン2.7.6の場合です。PHPは最低限インストールされているものとし、rootでの実行を想定しています
上記で基本的にインストールできるのですが、うまくいかないケースがあります。
- ハッシュ値のチェックが「Installer corrupt」でエラーしてしまう
- 「php composer-setup.php」がエラーする
上記が発生する場合、1番は時期的な問題、2番は環境的な問題が発生しているので、それぞれ対処が必要になります。
トラブルシューティング
1.ハッシュ値のチェックが「Installer corrupt」でエラーしてしまう
インストールするcomposerセットアップ用ファイルが更新されている可能性があります。
本記事の執筆時点ではVer2.7.6で、上記のコマンドでインストールできることを検証しています。
しかしバージョンが上がることでハッシュ値が変わり、エラーしているかもしれません。
その場合は真面目に公式の手順を確認してコマンド実行すればOKです。
↓↓↓
公式の「https://getcomposer.org」にアクセスし、Downloadページに遷移します。
※ちなみにトップページのおじさんはページを更新するたびにカラーが変わるようです
Downloadページの冒頭に「Command-line installation」という見出しがあるので、基本的にこのコマンドをコピペすればOKです。
ここに記載されているハッシュ値がバージョンごとに異なるので、そこを合わせれば済むという話です。
2.「php composer-setup.php」がエラーする
セットアップ用コマンドを実行すると下記のようなエラーが出ることがあるかもしれません。
[root@localhost xxx]# php composer-setup.php
Some settings on your machine make Composer unable to work properly.
Make sure that you fix the issues listed below and run this script again:
The json extension is missing.
Install it or recompile php without --disable-json
翻訳してみると、、、
ということなのでphp-jsonをインストールします。
yum install php-json
インストール後に再度セットアップ用コマンドを実行すれば通るかと思います。
まとめ
いっつも「ハッシュ値が違うぞ!」というエラーに引っかかり、何だかんだ数十分持っていかれるのから解放されたい。。。
解決策をググってあっちのサイト、こっちのサイトと探すのもちょっと手間になるので、この記事を書くことによって記憶は定着する!定着しなくてもググってこのページが出れば即解決できる!
ってなればいいなぁ、、、と思いました。
年々記憶力が怪しくなる。。。