XREAにConcrete5をインストール
「【レビュー】ある意味CMSの理想型かも。『Concrete5』を試す! | ネット | マイコミジャーナル」を読んで、XREA+にConcrete5をインストールしてみた。基本的にはConcrete5 :: Installing Concrete5の通り。だが、XREAに癖があり、最後の方でかなりトリッキーなことをする必要があった。
■ 標準のPHP(モジュール版PHP)でConcreteをインストール
XREA+では通常、モジュール版のPHPがセーフモードで動作する。この時、PHPが作成するファイルやディレクトリのオーナがhttpdになってしまい、Warningが出る。そこで、最後にファイル所有者の修正が必要になる。
- XREAの管理画面から、データベースを作成しておく。
- ダウンロードページからConcrete5のzipファイルを取得する(Language Packは不要)。
- zipファイルを展開し、そのままの構成でアップロードする。
- サーバーにsshログインし、index.phpのあるディレクトリで「chmod a+w -R config files」を実行する。
- Webブラウザでindex.phpにアクセスする。
- インストールウィザード画面が表示される。サイト名、メールアドレス、最初に作成したDBのホスト名(localhost)、ユーザ名、パスワード、DB名(=ユーザ名)を入力して進む。
- インストール完了画面が表示される。adminパスワードが表示されるので、メモしておく。また、Warningが表示されるが気にしない。
- XREAの管理画面から、[ツール]-[ファイル所有者の修正]を行う。
- インストール完了画面で、Continue to your siteをクリックする。
ここまででConcreteが動くように見える。しかし、実際には何かするたびにファイルやディレクトリがhttpdで作成され、そのたびにファイル所有者の修正が必要になる。
■ CGI版PHPに切り替え
上記を避けるため、CGI版PHPに切り替える。そのためには、indexスクリプトにAddHandlerする。ただ、ここにもXREAの独自ルールがあって、AddHandlerした拡張子のURLではPATH_INFOを扱えない。扱えないというより、URLにPATH_INFOがつくと、次のようなエラーになる。
No input file specified.
そこで、次のような(トリッキーな内容の).htaccessファイルをindex.phpと同じディレクトリに置く。
AddHandler cgi-script cgi
RewriteEngine on
RewriteRule index.php/(.*) index.cgi?pathinfo=$1 [QSA,L]
RewriteRule index.php$ index.cgi [QSA,L]
次に、index.phpをindex.cgiにリネームし、以下の内容に変更する。
#!/usr/local/bin/php -q
<?php
if ($_GET["pathinfo"]) $_SERVER["PATH_INFO"] = $_GET["pathinfo"];
require('concrete/dispatcher.php');
この両方で、「AddHandlerしたものにPATH_INFOをつけてはいけない」というXREAルールを満たすためのトリックを行っている。
Concrete5では“index.php/ページ名”というURLが多用されているのだけど、これがXREAルールに引っ掛かってしまう。そこで、まず拡張子.phpにはAddHandlerしない。かわりにrewriteを使ってindex.cgiに書き換え、PATH_INFO削ってクエリパラメータpathinfoに付け替える。
次に、rewrite後の拡張子.cgiはAddHandlerをしておき、CGIとして処理させる。この時、CGIの先頭(shebang)行でphpスクリプトとして処理されるように指定している。また、クエリパラメータpathinfo(に付け替えられてるPATH_INFO)を環境変数PATH_INFOに戻している。これで、以降の処理からは、通常通りPATH_INFOが指定されたように見える。
■ まとめ
こんな方法で、ファイルオーナの問題のないCGI版PHPライクに、またXREAルールのPATH_INFOが使えない制約をかいくぐって、XREA+でConcrete5を動かすことができた。おそらくよく似た問題が話題に上っているCORESERVERでも、同じトリックが使えるのではないかと思う。Concrete5はまだ新しいCMSだが、なかなか面白そうなので、XREA系の利用者も試してみてほしい。
作業手順こそもう少し整理できそうだが、設置と問題解決方法は、これでも試行錯誤した内容を見直してできるだけシンプルにしたつもりだ。もちろん、それでもトリッキーで気持ちが悪いとは思っている。もし他にいい方法があったら、ぜひ教えてほしい