Blog

ブログ

エックスサーバーにSOY CMSをインストールする:1.2.5版

soycms_xserver

SOY CMSを、設置条件を満たしていないエックスサーバーにインストールする方法を解説します。

10/22追記:
1.2.6以降、エックスサーバーでも正常に動作するようになりました。
設置手順は以前書いた記事と変わりませんが、不具合を回避する作業がひとつ増えます。
SOY CMSフォーラムのスレッドを更新していますので、詳細はこちらをご参照ください。
エックスサーバー(X20)にインストールする方法について

7/6追記:
バージョン1.2.5以降で、サーバー依存と思われる新たな不具合が出てきてしまい、正常な動作を保証できません。
現在は検証を打ち切り、エックスサーバーに対応の要望を出しています。
http://www.soycms.org/viewtopic.php?f=6&t=144
この記事をご覧になった方は、早急な判断は控え、実験程度にとどめるようお願いします。

前回のレビューでは業務利用の面からかなり辛口なことを書いていますが、SOYCMSは個人用としては充分なCMSです。
MovableType等のブログにはない機能もありますので、興味のある方はいちど使ってみてください。

  • フォーラムに投稿した内容を若干整理しています。
  • バージョン1.2.3(SQLiteインストーラーなし)+X20コースで確認をしていますが、確実な動作を保証するものではありません。
  • MySQL版は未確認です。同じ対応で問題はないだろうと思います。
  • エックスサーバーは、サーバー番号により微妙に仕様が異なります。
    PATH_INFOの設定が不要なサーバーもあるようですが、以下で示すスクリプトを追加しても動作への影響は特にありません。

エックスサーバーに不足している条件

  1. PHPバージョンが5.16
    SOY CMSはバージョン5.2以上である必要があります。
  2. 環境変数「PATH_INFO」が使用できない
    SOY CMSはPHP・Apacheの「PATH_INFO」が有効になっていなければ、ページ移動ができません。
  3. magic_quotes_gpc がONになっている
    バックスラッシュ等を自動除去する、magic_quotes_gpcはOFFになっている必要があります。

これらを解消すれば、エックスサーバーでも使用することができます。

1. コアファイルをアップロードする

まず、SOY CMSのコアファイルをサーバーにアップします。
特に変わった操作は必要ありません。

2. PEAR::Services_JSONを追加する

SOY CMSのインストールマニュアルを見ると、以下のように書かれています。

pear00

SOY CMSでは内部でJSON形式のデータを取り扱っています。そのため、php5.2.0より古いバージョンでは別途PEAR::Services_JSONをインストールする必要があります。

PEARは、JavaScriptでいうjQureyのような、PHPの拡張ライブラリです。
SOY CMSでServices_JSONクラスを利用しているのは一か所だけなので、そこで正しく利用できるよう、上記のライブラリを追加してやります。

PEAR::Services_JSONは下記ページで配布されています。

http://pear.php.net/pepr/pepr-proposal-show.php?id=198

service_json

ページ右下のリンクから、TGZ形式で圧縮されたファイルをダウンロードします。

+Lhacaなどの、TGZ形式に対応したソフトで解凍すると、「JSON.php」というファイルが入っています。
このファイルだけを

[インストールしたディレクトリ]/common/lib/

直下にアップロードします。

3. PATH_INFOを有効にする

PATH_INFOを有効にするには、一般に.htaccessに

AcceptPathInfo On

と記述すれば良いとされていますが、エックスサーバーではこれでもだめなようです。

しかし、同様の機能を持つ「ORIG_PATH_INFO」は有効になっているので、これの値を渡す修正を加えます。

[インストールしたディレクトリ]/common/lib/common.inc.php

<?php の次の行に、下記スクリプトを追加します。

if ((!$_SERVER["PATH_INFO"])&&(isset($_SERVER["ORIG_PATH_INFO"]))) {
$_SERVER["PATH_INFO"] = $_SERVER["ORIG_PATH_INFO"];
}

※開発チームのokadaさんによると、PHPがCGIモードで動作しているエックスサーバーでは上記修正で動作するが、モジュール版の場合は

[インストールしたディレクトリ]/common/lib/site.inc.php

にも同様の修正が必要とのことです。
エックスサーバー以外でPATH_INFOの問題を解決したい方は参考にしてください。

4. php.iniを上書きする

テキストエディタを開いて、以下の一行を記述します。

magic_quotes_gpc = off

これを「php.ini」というファイル名で保存して、エックスサーバーの最上位ディレクトリにアップロードします。
(サイトルートではなく、ドメイン名が書かれたフォルダが並んでいる階層です)

pear02

この位置にphp.iniを設置すると、この変更がサーバー全体で有効になります。
それでは問題がある場合は、
SOY CMS内の「magic_quotes_gpc」を利用している全階層にそれぞれphp.iniを設置するか、
問題がある別のスクリプトを使っているディレクトリだけphp.iniをさらに上書きしなければならないと思います。

5. インストール作業を行う

ここまで作業したら、

[インストールしたディレクトリ]admin/index.php

へ移動して、初期設定を行います。
以降はマニュアル通りに初期設定を行ってください。