ComposerはPHPのライブラリ依存管理ツールです。CentOSでお馴染みのYumや、FreeBSDのpkgと同じような使い勝手で管理出来ます。
サンプルとしてPHPでPDFを扱う時に必要なライブラリ『TCPDF』をインストールしてみます。
環境
- CentOS7
- PHP7
Composerのインストール
1 |
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" |
1 2 3 4 5 |
# php composer-setup.php All settings correct for using Composer Downloading... |
setup用ファイルを削除します。
1 |
$ rm -f composer-setup.php |
1 2 3 4 5 6 7 8 9 |
# ls -laht total 1.9M drwxr-xr-x 4 hoge nginx 4.0K Aug 24 11:12 . -rwxr-xr-x 1 root root 1.8M Aug 24 11:12 composer.phar -rw-r--r-- 1 hoge nginx 2.4K Aug 24 11:01 est_done.php drwxr-xr-x 2 hoge nginx 4.0K Aug 24 10:42 src -rw-r--r-- 1 hoge nginx 5.8K Aug 24 10:30 index.php drwxr-xr-x 3 hoge nginx 4.0K Aug 24 09:37 .. |
コマンドの登録を行います。
1 |
# mv composer.phar /usr/local/bin/composer |
1 |
# chmod +x /usr/local/bin/composer |
Composerでライブラリを探す
Composerでインストールが可能なのは、Packagistに登録されているものになります。有名なライブラリはほとんど登録されているので安心して探せます。
Composerは一般ユーザで使います。
1 |
# su ユーザ名 |
ライブラリのインストール
1 |
$ composer require setasign/fpdf:1.8.1 |
vendorディレクトリの中にインストールされています。
1 2 3 4 5 6 7 8 9 10 11 |
$ ls -laht total 40K drwxrwxr-x 4 hoge hoge 4.0K Aug 24 11:13 vendor drwxr-xr-x 5 hoge nginx 4.0K Aug 24 11:13 . -rw-rw-r-- 1 hoge hoge 2.0K Aug 24 11:13 composer.lock -rw-rw-r-- 1 hoge hoge 60 Aug 24 11:13 composer.json -rw-r--r-- 1 hoge nginx 2.4K Aug 24 11:01 est_done.php drwxr-xr-x 2 hoge nginx 4.0K Aug 24 10:42 src -rw-r--r-- 1 hoge nginx 5.8K Aug 24 10:30 index.php drwxr-xr-x 3 hoge nginx 4.0K Aug 24 09:37 .. |
composer.jsonを活用する
composer.jsonに下記のように記述して制御することも出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ vi composer.json { "require": { "setasign/fpdf": "1.8.1", "setasign/fpdi": "^1.6", "tecnick.com/tcpdf": "^6.2" }, "config": { "vendor-dir": "/var/www/vhosts/example.com/httpdocs/vendor" } } |
requireでインストールしたいライブラリを指定して、configでインストール先のvendorディレクトリ先を指定しています。
composer.jsonを利用してインストール
1 |
$ composer install |
パッケージを削除する場合
1 |
$ composer remove パッケージ |
ライブラリの活用
1 2 3 4 5 6 |
<?php $path = realpath(dirname(__FILE__)); require_once($path . '/vendor/tecnick.com/tcpdf/tcpdf.php'); require_once($path . '/vendor/setasign/fpdf/fpdf.php'); require_once($path . '/vendor/setasign/fpdi/fpdi.php'); |
require_onceでパスを記述して読み込んであげます。
お疲れ様です。