PHP開発環境を整備した(phpenv)
主な欲求は2つ。
- バージョン・ライブラリ依存を管理したい
- 実装・デバグ・リファクタのツール類が整っていて欲しい
PHPでの実装
PHP関係で調べてみたら以下の組み合わせで出来そう。 (エディタ周辺は色々あり除外)
role | command |
---|---|
静的チェック | php -l |
動的チェック | :program:xdebug |
バージョン管理 | :program:phpenv |
pkgインストーラ | :program:pyrus |
プロファイラ | :program:xprof |
ビルドツール | Phing |
テストFW | PHPUnit |
phpenv導入
osxでphpenv
を中心に環境を整える。
httpd
が homebrew
でインストールしている前提なので他OSだと連携部分が変わると思う。
phpenv でPHPをインストールするとpyrusが自動的に使える。
PHPUnit, xdebug, xprof, phing
かは pyrus
経由で導入する(実際は失敗した)。
[準備]PHPビルドに必要なpkgのインストール
他にも必要かも知れないけれど下ので大丈夫だった。 PHPビルド時に怒られたら都度追加する。
|
|
[準備]Apache:httpd インストール
apache::httpd
をbrew経由で入れる。
そしてphpを使う様にconfigファイルを書き換える。
ここでは SERVER_CONFIG_FILE
を直接書き換えてるけど、 無作法なので
./others, ./conf.d
とかに別ファイルで書いて読み込む。
|
|
phpenvをインストール
以下の実行後に .bashrc
に env
系おなじみの修正を加える。
|
|
加える内容は以下になる。自分はdotfile再読み込みでPATHが冗長になるのを避ける為に関数を挟んでる。
|
|
apache::httpdと連携する為に共用ビルドオプションを設定する
phpenv
経由でビルドする際のビルドオプションは
.phpenv/plugin/php-build/share/php-build/default_configure_options
に記述する。
なので以下を実行するとモジュールが作られる様になる。
|
|
使ってみる
|
|
httpd で使うPHPのバージョンを変更可能にする
phpenv
からapache
モジュールを切り替えるpluginをgaramon
さんが書いているのでインストールする。
|
|
自分の環境だけなのかlibphp5.so
のパスが変だったので読み込むPATHを柔軟にした。
|
|
ref. https://github.com/masu-mi/phpenv-apache-version/commit/f870723df2ba697d555607a2e68520e40dd2afbd
使ってみる
|
|
入れ替わる!
ref. http://techblog.allabout.co.jp/2013/08/01/280/
うまく動かせなかったこと
- Pyrusが機能しない
- 依存関係の管理は別
- Lint系が存在しない
- phpenvの中が結局rbenvなのは良いけれど…
Pyrusが機能しない
pyrus経由でライブラリをインストール出来るって書いたのだけど失敗しました。
- pear2.php.net にあるライブラリが
info.xml
を持ってなくてダウンロードに失敗する - pear.php.net はあるのだけどpackage.xmlが駄目っぽくて入らない。
依存関係の管理は別
PyrusはBundlerみたいにローカル環境に入れたいpkgリストから解決みたいな事が出来ない。 Onion ってのがあるらしいけどpear, peclから独立してるのとpear, peclを使う。
「あれ、じゃあモダンなpyrusとの関係は?」って思った。
Lint系が存在しない
php lint
とかでググったけど見当たらない。 php -l
だとスタティックメソッドで $this
使っても引っかからない。
phpenvの中が結局rbenv
phpenv
を叩いて出てくるメッセージがrbenv
って自覚していて悲しい。