phpの予約状況カレンダーMRCalendarをlolipopにインストール

2015年4月26日日曜日

予約状況カレンダーを検討していた頃、「MRCalendar」と言うphpスクリプトに出合った。phpのカレンダーは初めてである。これをロリポップで、動かすために、「【WEB製作】MRCalendarインストール方法」を参考にやって見たが、Pearインストールの途中で止まってしまう。
結局、他のサイトの力を借りながら、何とか働くようになった。
あれから、1か月半経った。このままでは忘れてしまうので、別なドメインのlolipopサーバーで同じことをやって見た。
必要なもの
(1)MRCalendar本体 (リンクは作者元のYS-Lab)
(2)Smarty
(3)Pear
の3つ。

先ず(1)から順次見て行くわけだが、手順は
(1)MRCalendarVer.0.62のダウンロードとZIPファイルの解凍。
(2)Smartyのインストールはロリポップの「Smartyの使い方」のページを参考に行うが、最初にやった時「PHPのsafe_modeの確認」で迷った。php5.3とphp5.4では違う。最初、php5.4でやったが、どうもMRCalendarが動作しない。そこでphp5.3に変更してやったら、動作するようになったので、今回もphp5.3でやることにした。

(3)lolipopユーザ専用ページにログインし、WEBツールのPHP設定で全てのドメイン(サブドメイン)に対して、「php5.3」に設定した。
image
(4)次はphp.iniの設定変更をクリックし、safe_mode』が『Off』になっていることの確認。この通り初期値でoffになっているからOK。
image

(5)Smartyクラスを読み込みテストのため、Smartyのサンプルコードのダウンロードsmarty.zip-1.16KB。
(6)サンプルコードを解凍したら、指示通りのディレクトリにアップロードし、パーミッションを変更。(FFFTPでは既定値であった)
image

(7)Smarty.phpを設置したアドレスにアクセスして、「Hello World!」が出ることをブラウザで確認。下図の通りOK。
image
(8) 修正go-pear.phpのダウンロード
ソースコードを
http://pear.php.net/go-pear から入手し、インストールしようとしたら、21%で止まった。何度やってもだめ。
image
そこで、違うサイトのを見たら、「これは、
公式のgo-pear.phpが更新されていない事が原因です。2014/06/28現在の公式.1.6だと、大体21%で止まります。」と言う記事があった。そこで分かったのはここのサイトのgo-pear.phpを使うと良いということだ。go-pear.phpをクリックするとそのコードが表示されるので、それを全て選択し、コピー、そしてMKEditorに貼り付けて、go-pear.phpのファイル名で保存(コードはUTF-8にした)。
※メモ帳ではやっていない。

(9)サーバー側にディレクトリを作成
サーバー側に作成するディレクトリを”PEAR”とし、パーミッションは777にした。(http://ドメイン/PEARの形)
(10)go-pear.phpをPEARに転送
go-pear.phpを、サーバー側のディレクトリ”PEAR”内に転送する。パーミッション変更なし(644)。
(11)ブラウザでgo-pear.phpにアクセス
http://ドメイン/PEAR/go-pear.php

(12)pearのインストール
画面にpearスターター画面が表示されれば、下部NEXT>>をクリック。次の画面に移り、最下部のインストールを押す。
image
Next>>の次の画面で
1. Installation prefix ($prefix) のアドレスを控えておく。
デフォルトで画面下のInstallをクリック。
(13)Installation Completed!が表示されればOK。
image

(14)作成した新ディレクトリ(PEAR)にアクセス制限を掛ける
ロリポップのユーザー専用ページにログインし、アクセス制限をクリック
image
(15)新規作成で下図フォームに入力して、「作成」
image
(16)「OK」をクリック
image
image
実際にブラウザで制限ディレクトリPEARにアクセスしてみると
image
となる。

(17)MRcalendarで、calendar/common_def.phpの編集
32行目のdefine('PEAR_DIRECTORY',   '/var/www/htdocs/pear/PEAR');
define('PEAR_DIRECTORY','/home/users/*/ユーザー名/web/PEAR/PEAR');に変更。
*はユーザー名で異なる。0,1,2などの数値が入る。
※ (12)で控えたアドレスではPEAR一つだが、実際の'PEAR_DIRECTORYはPEAR/PEAR内なので、PEARを重ねて入れた。

36行目 define('SMARTY_CLASS_FILE',dirname(__FILE__) . '/var/www/htdocs/smarty/Smarty.class.php'); を
define('SMARTY_CLASS_FILE','/home/users/*/ユーザー名/web/Smarty/Smarty.class.php');  に変更。
*はユーザー名で異なる。0,1,2などの数値が入る。

(18)calendar/lib/内にあるファイルの編集
・ysc_admincalendar.phpの73行目
・ysc_calendar.phpの29行目
・ysc_imgcalendar.phpの33目 の
require_once(SMARTY_CLASS_FILE); を
require_once("Smarty/Smarty.class.php");
に変更する。
(19)ローカルのcalendarフォルダーをサーバーにアップロード

(20)パーミッション設定
http://www.ys-lab.jp/software/mrcalendar/index.html#4
の指示通り、設定する。
(21)calendar内のindex.phpにアクセス
( http://ドメイン/calendar/index.php )
次のような画面が出れば成功!
image
※管理画面へは、http://ドメイン/calendar/admin_calendar.php となる。

●メモ
※未だ記憶の残っている内に別なドメインでやって見たが、一発で全て動作した。
※参考にしたサイトのページはローカルに保存しておいて良かった。いま、リンク切れになっていてクセスできない。
※MRCalendarはphpの拡張機能を使っているので、動作させるまでが大変であった。
※予約カレンダーを料金入りとし、そのデータをエクセルで管理しようとするとこれまた大変。これはまた日を改めて書くことにしよう。