これは、a-blog cms Advent Calendar 2014の20日目の記事です。
a-blog cmsは、汎用CMSの中では、初期インストールが難しい方です。
コードの暗号化を解除する「ioncube loader」という拡張が必要となるためです。
ですが「このエラーはなぜ出るか」「どのようにサーバーの情報を調べれば良いか」がわかっていれば、よっぽどマニアックなサーバーでない限り、確実にインストールできます。
公式サイトのインストールマニュアルで書き切れないことを、ここでまとめたいと思います。
インストールできない!トラブルシューティングまとめ
真っ白
ioncube loaderが動作していません。確実に設置する方法については後述します。
- ioncube loaderのビット数違い
- linux版には32ビットと64ビットがあります。最近の共有サーバーは64ビットが多いですが、32ビットも試してみてください。
- ファイル名末尾に「_ts」が付いているioncube loaderを指定している
- 末尾に「_ts」が付いているものは「スレッドセーフティー版」といって、その設定を行っているサーバー専用のファイルです。ほとんどのサーバーは「_ts」が付いていない方で動作します。
- php.iniのzend_extensionのパス間違い
- 相対パスではリンクできません。サーバー絶対パスとしてください。
- ioncube loaderを正しく設置しているにもかかわらず真っ白
- PHPにエラーがあるが、サーバーでエラー文を表示しない設定になっている可能性があります。サーバーのPHPエラーログが見られる場合は、そちらを確認して原因を探ってみてください。
なお、index.phpの二行目にini_set関数を挿入することで、強引に表示する方法もあります(確認後は必ず削除してください)。
<?php //003ab ini_set( 'display_errors', 1 ); ・・・以降a-blog cmsの暗号化コード
404エラー
初期インストールではあまり報告されていません。サーバー移転の際、「themes」フォルダに移転前のテーマを転送し忘れると発生しがちです。
500エラー
- インストールできたがログインできない・トップページ以外が500エラー
- サーバーの仕様です。.htaccessの15行目、「RewriteBase」の前のコメントアウトを外してください。
ラピッドサイトなどのVPS、NTTメール&ビズ、お名前.comなどで確認しています。
503エラー
index.phpがトップページとして認識されていません。localhostの場合は、DirectoryIndexを確認してください。
レンタルサーバーで、旧サイト一式をごっそり削除してからすぐにアップロードすると、このエラーになることがあります。数分待ってから再読み込みしてみてください。
「ablogcms」フォルダ以下でないと表示されない
a-blog cmsは「index.phpの場所=サーバーのトップページ」となり、管理画面だけディレクトリを下げることはできません。MovableType・WordPressの扱いに慣れている人がやりがちです。
解凍したインストールパッケージを丸ごと転送しても同じ状態になります。「ablogcms」フォルダの転送は「フォルダの中身をすべて」で、「フォルダごと」ではありません。また、解説PDFや「omake」をサーバーに置く必要もありません。
確実にインストールする方法
以上、いろいろなトラブルがあるわけなのですが、ほとんどの問題はioncube loader関係です。なので、ここを確実にクリアするだけでもかなりスムーズになります。
ioncube loader設置に必要な情報
- すでにioncube loaderが設置されているか
- PHPのバージョン
- サーバーのOS名
- サーバーのフルパス
phpinfo関数を書く
サーバーに「PHPの詳細情報を調べるプログラム」を設置します。
新規ファイルを作成し、以下のコードを書いて、「phpinfo.php」というファイル名で保存してください。
<?php phpinfo();
phpinfo.phpをサーバーに設置してアクセスすると、PHPのバージョン、サーバーの設定情報を詳しく見ることができます。
すでにioncube loaderがあるか調べる
phpinfoのページをスクロールしていくと、最初の表のすぐあとに、拡張機能に関する表記があります。
ここに「ioncube loader」の表記があれば、すでにこのサーバーにはioncube loaderが設置されています。
なお、あとで自分で設置しても、同様に「ioncube loader」が追記されることになりますから、サーバーに設置したa-blog cmsを確認しなくても、この画面を再読み込みするだけでチェックできます。
PHPバージョン、OS名を調べる
PHPのバージョンは、ページ先頭に大きく書かれています。
OS名は、 最初の表の先頭行「System」に書かれています。OSにより表記が異なり、Linuxだとこうです。
Solarisだとこうです。「SunOS」というのは、Solarisの以前の名称です。
Windowsサーバー、FreeBSDの場合は、バージョン番号も調べてください。
フルパスを調べる
サーバーの公開領域内にioncube loaderを置いた場合、以下のようにphp.iniに書くことになります。
zend_extension = "★公開領域までのフルパス★/ioncube/★ioncube loaderのファイル名★.so"
フルパスがサーバーのコントロールパネルに明記されていない場合でも、phpinfoで調べることができます。
ページをスクロールしていき、「Environment」か「PHP Variables」の表を見ていけば、公開領域へのフルパスが書かれています(どの項目に書かれているかは、サーバーにより異なります)。
まとめ
以上、参考になれば幸いです。
Web制作者にとって、サーバーやプログラムはブラックボックスです。a-blog cmsはそれをほとんど意識せずに制作に専念できるのが魅力ですが、とっかかりの部分で、どうしてもブラックボックスに向き合わなければなりません。
なので、自分でサーバーを選べる状況の場合は、自動インストール機能があるCPIか、ioncube loaderが含まれているロリポップ・ヘテムルを選ぶのがよいです。
ただ、サーバーのエラーがどのような意味を持つのか、どうすればエラーの原因をつかめるのかを知識として知っておくと、a-blog cmsに限らず、どのシステムでも安心して扱えるようになると思います。