おい、俺のphp.iniはどこだ?

数年前、私が管理しているLinuxサーバにApache 2.2xとPHP 5.3.1をインストールしました。 .tar.gz'sを使って、指示通りにビルドしました(rpmやその他のものの代わりに)。そして、すべて順調でした。

今日は、PHPのライブラリと思われるthisをインストールする必要があります。 make installまでのすべての手順を行ったところ、$PHP_HOME/lib/extensions/somecomplicatedname/ibm_db2.soにibm_db2.soが見つかりました。

最後のステップではphp.iniを設定するのですが、私のシステムにはphp.iniがありません。恐ろしいですね。PHPは正常に動作していますが、もちろん、誰かがDB2をいじるためにGUIを使えるようにするために使いたい、この新奇なibm_db2の魔法を除いてはです。(小さなPHPスクリプトを試してみましたが、失敗してibm_db2の関数が利用できないことを示しました)。

PHPを扱うのは数年に一度くらいなので、DB2にウェブベースのGUIでアクセスできるようにするにはどうしたらいいのか、非常に基本的なレベルで教えてください。

コマンドラインで実行します。

php --ini

のように表示されます。

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/curl.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_sqlite.ini,
/etc/php5/cli/conf.d/sqlite.ini,
/etc/php5/cli/conf.d/sqlite3.ini,
/etc/php5/cli/conf.d/xdebug.ini,
/etc/php5/cli/conf.d/xsl.ini

これは私のローカルのdev-machineからのものです。しかし、2行目が興味深いものです。何も書かれていない場合は、最初の行を見てください。これは、PHPがphp.iniを探すためのパスです。

同じ情報をスクリプトの中で phpinfo() を使って grep し、ブラウザで呼び出すことができます。その情報は出力の最初のブロックに記載されています。php -i` はコマンドラインでも同じことができますが、かなり不便です。

解説 (10)
phpinfo();

は、その場所を教えてくれますし、コマンドラインからは

php -i
解説 (0)

設定ファイルの詳細情報は、以下のような方法で得ることができます。

$ -> php -i | ack config # Use fgrep -i if you don't have ack

Configure Command =>  './configure'  ...
Loaded Configuration File => /path/to/php.ini
解説 (0)