herokuがcomposer.lock必須になったのでcomposerの入れ方をメモしておく

herokuにcomposerを使用したプロジェクトをデプロイする場合、今まではwarningは出ていたようだけど、composer.lockはなくてもデプロイ出来ていた。
それが、2015/8/21にPHPのランタイムがアップデートされ、composer.lockが必須になった、とのこと。
PHP versions 5.5.28, 5.6.12, 7.0.0RC1 available; new composer.lock requirements | Heroku Dev Center

composer.lockがない場合は以下のようなエラーが出る。

ERROR: Your ‘composer.json’ lists dependencies inside ‘require’,but no ‘composer.lock’ was found. Please run ‘composer update’ to re-generate ‘composer.lock’ if necessary, and commit it into your repository. For more information, please refer to the docs at https://devcenter.heroku.com/articles/php-support#activation

composerのインストール

環境はmacで、デフォルト等のPHPが入っている前提で。
以下のコマンドを適当なディレクトリで叩くだけ。

1
2
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer

ターミナルを再起動して、確認。

1
2
$ composer -v
Composer version 1.0-dev (f1aa655e6113e0efa979b8b09d7951a762eaa04c) 2015-08-20 11:59:54

参考

http://mawatari.jp/archives/install-composer-in-mac

composer install

この状態で、composer.jsonがあるディレクトリに移動し、$ composer installを叩いてみる。
これでインストール出来れば完了。
ただし、PCにインストールされているPHPによってはモジュールの関係でエラーが出る場合がある。
例)

Problem 1
– The requested PHP extension ext-mcrypt * is missing from your system.

この場合は、全部入りのPHPを入れ直すのが早い。

PHPのインストール

以下のサイトに全部入りのものがまとまっているようなので、そこからインストール。
PHP for OS X as binary package

現時点で最新の5.6を入れる。

$ curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6

このままだと使用するようにはなってないのでパスを通す。
環境によって違うが、デフォルトでは、.bash_profileに記述すればよいよう。

~/ディレクトリ以下の.bash_profileをエディタ等で開いて記述。
なければ作成する。
コマンドで実行する場合は、なければ新規作成としてくれる。
例えば、viで開く場合は以下。
sudoをつけてルート権限で実行している。

$ sudo vi ~/.bash_profile

以下を記述。

export PATH=/usr/local/php5/bin:$PATH

保存して終了。
(viの場合は、iで入力モードに、escで戻って、:xで保存して終了)
viエディタの使い方

ターミナルを再起動してphpのバージョンを確認。

$ php -v
PHP 5.6.11 (cli) (built: Jul 10 2015 21:46:48)

composer install

この状態で、$ composer installすれば完了。
実行後は実行したディレクトリ内に、composer.lockvendor/が出来上がる。
vendorディレクトリ以下はgitで共有しないように、.gitignoreに追記しておくこと。

.lockと.jsonの関係

composer.jsonには、必要なパッケージとインストールするバージョンの指定があれば記述する。
その状態で、$ composer installすると、パッケージがインストールされ、インストールされたパッケージのバージョン情報などが記述された、composer.lockファイルが作成される。
この状態で、他環境などで同じく$ composer installすると、composer.lockに書かれたバージョンのパッケージがインストールされ、全く同じ環境が構築される。

$ copmoser updateをすると、再度composer.jsonの記述を元にパッケージがインストールされ、composer.lockが更新される。

参考

MacでPATHを通す – Qiita

   このエントリーをはてなブックマークに追加