がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

php.iniの謎−読み込む場所編−

んむぅ…php.iniとの格闘は現在も続いております。
今回の御題は「どこのini読んでるねん?」
特にポイントになったのがコマンドライン関係。…いやまぁ「PHP コマンドラインでなんか使いたくねぇよ」とかいう切実な発言をしたいのですが、現実問題として「テーブルとか全部クラス設計している以上cronで動かすコマンド系を多言語で」ってのは…無理じゃないけど出来れば避けたい、とかっていう実情がありまして。
でまぁ否応なくコマンドラインで扱うPHP(いわゆるCLI版ってヤツですな)を調べ始めたのですが。
……いやぁphp.ini読む場所がおかしいおかしい。
とりあえず途中経過すっ飛ばして結論を。


自分のプログラムがどこ見てるかについては、
phpinfo()
をお使いください。
Configuration File (php.ini) Path => /usr/local/lib/php.ini
とかって感じで出力されますので(ああ結構な量が出てくるので、適宜パイプしてgrepなりリダイレクトでファイル保存なりしてくださいませ)。


で…優先順位なのですが。


…なんじゃらほいこの優先順位は?
Apacheその他とむやみやたらに結びついてるわ作業ディレクトリのiniファイルの優先順位高いわ。何よりも如何なものか感満載なのが「なんでコンパイルオプションで明示している位置の優先順位がこんなに低い?」
…あきれ返って物も言えません。


ちなみに、/etcに場所を変えたときの、とりあえず問題ないから放置してるけどよくわからない挙動。
Configuration File (php.ini) Path => /etc/php.ini
Configuration File (php.ini) Path => /etc
この2種類がよくわからない規則性(…があるはずなんだけどなぁ……)で混在。なんでやねん。


とりあえずコマンドラインでやるときは明示的に -c で位置指定…なのかなぁ?
時々Webなんかで「複数バージョン混在環境には…」なんてのが載ってますが。「問答無用で優先順位が高いディレクトリには何もおくな」って警告を書いてあるところが見つからなかったので、一応ここで警告しておきます。


それにしても…使えば使うほどだめっぷりがスルメのように味わい深く噛み締められてしまう今日この頃………


そうそう。php.iniを書き直したとき、コマンドライン版はよいのですが、通常のWeb経由の場合、念のために「Web デーモンをrestart」しておきましょう。
…これもどうかと思うのですが。ええ。