読者です 読者をやめる 読者になる 読者になる

PSLブログ

ヨシナシゴトヲツヅリマス

Virtualminで*.htmlなphpスクリプトでローカルなphp.iniを適用させる

タイトルつけるのが難しい…

発端は、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サーバ->該当するホスト:ポート番号の仮想サーバのリンクをクリック->ディレクティブの編集

ff-20130424152717

ff-20130424152726

ff-20130424152732