読者です 読者をやめる 読者になる 読者になる

俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

日報 #82 - PHP CLI での環境判定

性癖の歴史的系譜を解き明かしたいなぁと思うが、
結局そういうものはメディア史になってしまうだろうという指摘を受け、
語られぬ歴史を蔵めることの重要性を再認識したわけです。
RoomClipは2014年を生きる日本人の暮らしを今日も伝え続けるのです。

本日も話すことがないので、
ちょっとした疑問を。

PHPCLI起動をさせる時、
環境設定をどうやって判定していますか?
URIがあればそれで判定すればよいので簡単です。
develop.hoge.comならdevelop環境だし、
hoge.comならproduction環境、
local.hoge.comならlocal環境…のように実行環境を判定できます。

ではCLIならどうしましょうか。 考えられるパターンを挙げてみましょう。

1. ディレクトリで分けてみる

developブランチを追跡しているリポジトリをプルってるものを、
/var/www/develop/へ展開。
とかしておけば、$_SERVER['PWD']で判定できそうです。
でもこれはいい方法ではなさそうです。

2. ホスト名で判定してみる

php_uname('n')などでホスト名を取得。
例えばAWSではip-xx-xx-xxみたいな形になっているので、
それでremoteかlocalかを判定は可能。
private ipを固定しておけば、まぁremote上でのdevelop、productionを判定することは可能でしょう。
ですが、、、他のクラウドを使ったりするたびに、その判定パターンを変更し無くてはならないかもしれません。

んー、あと一歩って感じですね。

3. 実行の際に引数で指定する

php hoge.php --env="dev"
のように指定してみる。
これは大きな問題はなさそうですが、CLI実行の際には必ずenv指定が必要になります。
これを仕様とするかどうかは考えものですね。

中々難しいですが、
3番が今のところスジ良さそうです。
何かいい方法ありますかね。。。