[PHP]自分用のphp.iniを透過的に適用させる方法
phpに独自の設定をしたいんだけど、その方法が分からなくて困っていた。
いくつか方法はあるんだけど、どれも使い物にならない。
/etc/php.iniを編集するのは論外。他に影響が出ちゃう。
コマンドラインで直接設定してみたり、
$ /usr/bin/php -d a=1 -d b=2 foo.php
自分用設定ファイルを作っておいて読み込ませたり
$ echo -e "a=1\nb=2" > ~/.php/php.ini $ /usr/bin/php -c ~/.php foo.php
動くには動くけど、毎回オプション付きで/usr/bin/phpを実行しなきゃいけない(=透過的じゃない)。
aliasしとけばいいじゃんって、aliasでは#! /usr/bin/phpなファイル(実行PHPファイル)を実行できない。
# ↓こうしておけば $ alias php='php -c ~/.php' # ↓これはできるけど $ php /usr/bin/pear # ↓これはできない $ pear # ↓これでできるよ、だって? $ alias pear='/usr/bin/php -c ~/.php /usr/bin/pear' # ↓コマンド増える度にalias増やすんかい。バカバカしい。 $ alias phpcs='/usr/bin/php -c ~/.php ~/.php/phpcs' $ alias phpcd='/usr/bin/php -c ~/.php ~/.php/phpcd'
で、最近になってやっと見つけたのが環境変数PHP_INI_SCAN_DIR。たすかったー。
これに指定されたディレクトリから*.iniのファイルを読み込んでくれる。やったー。
ただしディレクトリ1個しか指定できない。えーなんでよー。
もしconfigureで--with-config-file-scan-dirが既に指定されていた場合、
PHP_INI_SCAN_DIRを設定するとそっちを読んでくれなくなる。アホー。
なのでシンボリックリンクで華麗にスルー。もーphpはホントに毎回毎回かゆいところに手が届かん、というかクソ。
$ mkdir ~/.php $ cd ~/.php $ ln -s /etc/php.d/* . $ vi my-php.ini # 名前は.iniで終わっていれば何でもいい。 $ export PHP_INI_SCAN_DIR=~/.php
どや