タイトルつけるのが難しい…
発端は、Virtualminを使っているバーチャルホストで、.htmlなファイルをphpとして動かしていて、(.phpなファイルで)セッションに書き込んだ後で、*.htmlなファイルにLocationヘッダで飛ばすと、セッションが引き継がれないという症状に出くわしたのがきっかけである。
いろいろ調べていて、.htmlのときと.phpのときとで、session.save_pathが違うのが原因だったことがわかった。
そこまでわかると思い当たる節が…。*.phpでのsession.save_pathは、
/home/ユーザー名/domains/サブドメイン/tmp
というパスなのであった。*.htmlなファイルをphpとして認識させているのは、サブドメインのルートに置いてある.htaccessで、Virtualminのバーチャルドメインごとに定義されているphp.iniを設定しなければダメだと気づいた。
そこで、以下の通り、サブドメインのhttpd.confに追記したところ解決した。
<Directory /home/ユーザー名/domains/サブドメイン/public_html> … AddHandler fcgid-script .php AddHandler fcgid-script .php5 AddHandler fcgid-script .html FCGIWrapper /home/ユーザー名/domains/サブドメイン/fcgi-bin/php5.fcgi .php FCGIWrapper /home/ユーザー名/domains/サブドメイン/fcgi-bin/php5.fcgi .php5 FCGIWrapper /home/ユーザー名/domains/サブドメイン/fcgi-bin/php5.fcgi .html </Directory> … RemoveHandler .php RemoveHandler .php5 RemoveHandler .htm
【4/24追記】上記の記事を書いたにもかかわらず、本番ドメインで全く同じ問題に遭遇し、同じだけはまってしまった…。 上記設定ファイルの編集は以下からたどれる。 ※同じホスト(サブドメイン)でも、80番ポートと443番ポートのhttpd.confファイルに分かれているので、両方に同じ変更が必要
Webmin ->サーバ ->Apache Webサーバ->該当するホスト:ポート番号の仮想サーバのリンクをクリック->ディレクティブの編集