Vagrantの仮想環境にPHP Composerの導入

/

Composer

ComposerはPHPのライブラリの依存関係を管理してくれるツールです。LaravelやCakePHPなどのフレームワークをインストールする際にも利用できます。

依存管理ツール

アプリケーション開発に使われるフレームワークやライブラリは多くの別のライブラリを使用して作られています。そしてその別のライブラリはまた別のライブラリがを利用しているので、さらにそのライブラリが別の…という形でライブラリの依存関係が続いていきます。

ライブラリの依存関係が続くと例えば
ライブラリA ->ライブラリB -> ライブラリC -> ライブラリD -> …
といったケースでライブラリBのアップデートによってライブラリCとの間にエラーが生じ場合にライブラリDとそれに続くライブラリにもエラーが生じてしまいます。そのためライブラリのバージョン管理する必要がありますが、それぞれのライブラリは別々にアップデートされるためこれらを一々手動で管理するのは手間です。
そこで依存管理ツールを使うとライブラリをまとめて管理してくれるので目的のフレームワークやライブラリを安定して利用出来るようにになります。

Composerのサイト

更新するたびに色が変わる指揮者のロゴがいい感じです。
https://getcomposer.org/

環境

Composer利用するにはver5.3.2以上のPHPが必要です。
今回はVagrantを使った仮想環境上のCentOSでComposerを実行していきます。

実行環境

VirtualBox 5.0.24
Vagrant 1.8.1
HostOS ubuntu16.04
GuestOS CentOS7.2
PHP 7.0.11

インストール

Composerのダウンロードの手順は色々ありますが、今回はComposerのサイトに載っているやり方に従います。

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

この一連の処理は

  • カレントディレクトリにインストーラーのダウンロード
  • SHA-384でインストーラーの破損をチェック
  • インストーラーの実行
  • インストーラーの削除

を順番に実行しています。

実行ファイルの移動

Composerの実行ファイルがインストールされたら、ファイルをPATHの通った場所に移動させます。

$ sudo mv composer.phar /usr/local/bin/composer

PATHの確認

PATHが通っているか確認をします。

$ composer --version
Composer version 1.2.1 2016-09-12 11:27:19

パッケージのダウンロード

動作確認も兼ねてPHPのテンプレートエンジンであるTwigをダウンロードしてみます。

Composerでダウンロード出来るパッケージはcomposer.org/Brwoser Packages -> packagisthttps://phppackages.org/から調べる事が出来ます。

Composer.Json

ComoposerのパッケージはComposer.jsonというJSONファイルで管理します。
手動でcomposer.jsonを作って直接パッケージを指定してもいいですが、コマンドからパッケージを指定するとcomposer.jsonの作成からインストールまでを実行してくれます。
なおいくつかのパッケージを確認しただけですがインストールにはGitを利用しているものが多いようなので、必要な場合にはGitも予めインストールしておきます。

//gitのインストール
$ sudo yum install git -y
パッケージのインストール
$ composer require twig/twig
{
    "require": {
        "twig/twig": "^1.24"
    }
}

ダウンロードしたパッケージはvendor/以下に置かれるので利用したいPHPファイルからrequire_onceなどで呼びだして利用します。twigの場合にはvendor/autoload.phpが用意されているのでこれを読み込みます。

require_once 'vendor/autoload.php';

$loader = new Twig_Loader_Array(array(
    'index' => 'Hello {{ name }}!',
));
$twig = new Twig_Environment($loader);

echo $twig->render('index', array('name' => 'twig'));
//サンプルコードの実行
$php sample.php

Hello Twig!

無事ダウンロードしたパッケージを読み込んだコードが実行出来ました。

感想

PHPのライブラリのインストールは結構面倒なイメージがあったのですが、Composerの導入は思ったよりも簡単でした。PHPはRubyなどと比べて手元での動作確認がしづらく依存管理ツールの利用価値は高いと思うので上手く使っていきたいです。

参照

https://getcomposer.org/
IBM developerWorks