PR

PHP言語の特徴の一つに、php.iniによる言語設定があります。デフォルトの設定のまま運用している人も多いかもしれませんが、サーバーごと、バーチャルホストごと、ディレクトリごとなどで、設定項目を変更したい事が多くあると思います。このTipsでは、これらの設定を別々のファイルに分割し、メンテナンス性を向上させる方法を紹介します。

2006年9月1日号のTipsメーリングリストにて、php.ini以外でも設定できる事を紹介しました。

この方法を使うと、ディレクトリごと、バーチャルホストごとに、設定を行うことができます。

実はもう1つ、php.iniと同列であるPHP_INI_SYSTEMレベル設定を、別のファイルに分離する方法があります。

PHPのconfigureオプションに、--with-config-file-pathと共に、--with-config-file-scan-dirという設定項目があります。

これらの意味は、以下の通りです。

  • --with-config-file-path:php.iniファイルのある場所を指定します
  • --with-config-file-scan-dir:設定ファイルを読み込むディレクトリを指定します

前者はデフォルトでは、/usr/local/libに設定されます。そのため、php.iniファイルはこのディレクトリにある必要があります。また、後者のディレクトリを指定することで、php.ini以外のファイルを、php.iniの後に読み込むことができるようになります。

このテクニックを使うと、php.iniはPHPのデフォルトで提供されるものをそのまま修正せずに使用し、独自に設定したディレクトリにてサーバー固有の設定を指定する、といった事が可能になります。

これに伴い、php_ini_scanned_files関数が用意されています。この関数は、php.ini以外に読み込まれたファイルが返されます。