nginx + PHP(FastCGI)で特定のホストだけphpの設定を変更する

Apacheだと.htaccessやhttpd.confで設定していたホストごとのphpの設定。nginx と FastCGIではnginx.confの中で設定を行う。
※ もちろんnginx.conf本体でなくとも、そこからインクルードするファイルで行ってもOK。

server ブロックの中のphpの設定をしているブロックで下記のようにPHP_VALUEを指定する。

server {
  ...
  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME /path/to/web/$fastcgi_script_name;
    fastcgi_param PHP_VALUE "include_path=/path/to/include_path
                           display_errors=on";
  }
  ...
}

上の例のように複数(include_pathとdisplay_errors)設定したい場合は ; で区切っても改行で区切っても動いた。

phpのセッションにmemcachedを利用するとphpMyAdminのsession_write_close()でエラーがでるようになる

phpMyAdminは非常に便利なMySQLの管理ツールなのですが、phpのセッションにmemcachedを使うように設定すると下記のようなエラーがでるようになりました。

Warning: session_write_close() [function.session-write-close]: open(tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15/sess_miMkjjQnUA6IcXKPGeAbcUtB010, O_RDWR) failed: No such file or directory (2) in *****/***/***/index.php on line 44

※ ***は実際にはファイルのパスです。

このエラーはphpMyAdminがsession.save_handlerにfileを指定しているためにおきるようです。そこで、phpMyAdminの中のlibraries/session.inc.phpにある

ini_set('session.save_handler', 'files');

をコメントアウトします。これでこれまで通り正常に利用できるようになりました。

※ ちなみに今回利用していたphpMyAdminのバージョンは2.9.0.2でした。その他のバージョンでも同様の症状が起きる場合は同様の問題と思われます。