田舎の風見鶏

レンタルサーバの移行を考える-ラクサバからドメインキングへ

日記

最近 レンタルサーバの移行を考えています。
ラクサバからドメインキングへ・・・

現在 このサイトはsoy cms1.8.12で構築していますが、ラクサバではsoy cms1.8.6以降が動かないんです。

PHP5.2特有のバグか仕様のようなのですが、とりあえずsoy cms本体のファイルを書き換えて動かしています。

soy cmsのバージョンアップのたびにファイルを書き換えるのは面倒なのでPHP5.3以降の環境で安価なレンタルサーバを探していました。

いろいろと比べてみた結果、残ったのが「ドメインキング」

月額100円が実に魅力的です。

簡単にラクサバと比較してみると

ラクサバドメインキング

プラン比較
ラクサバ
ラクラクミニ
ドメインキング
Pプラン
月額 99円(税別) 100円(税別)
容量 2G 20G
PHP 5.2.17

5.3
5.5
5.6

Mysql 0個

1個

と、ラクサバ ラクラクミニで優っているのは月額だけですが、ドメインキングPプラントの差額は月2円の違いだけです。

soy cmsの使用を前提とした場合ドメインキングはPHP5.3以降が使えるのが非常に魅力的です。
容量が10倍に増えるのもうれしいところです。

それに加えてドメインキングPプランはMysqlも1個使用できるので、wordpressやMovabletypeも利用できます。
もちろんsoy cmsのMysql版も利用できます。

ラクサバの契約期間がもうしばらくあるのですが、次回の更新時には「ドメインキング」に乗り換えているかもしれません。

ネット環境は日々変化しているのでレンタルサーバの契約も定期的に見直しをするべきですね。

ドメインキングに興味がある方はこちらから詳細を御覧ください。↓↓↓↓↓↓↓↓↓↓↓↓

気になるsoy cmsの更新状況

日記 soycms

お気に入りの国産cms「soy cms」
このサイトもsoy cmsで構築されています。

最近気になっているのがsoy cmsの更新状況。

この記事を書いている時点で、Ver1.8.12からアップデートがリリースされていない状況です。

結構頻繁にアップデートされていたんですが、最近更新が滞っているようです。

ネットでsoy cms関連の情報をよく検索するんですが、どうも開発に携わっていた方が脱退されたようで、それが影響しているのかもしれません。

無料で利用させてもらっているので贅沢はいえませんが、Ver1.8.5以降はPHP5.2では動かないバグがあるので、できれば早く次期バージョンが出て欲しいところです。


モジュールでURL・サイトIDを取得してみた

soycms

byぱくたそ

タイトルの通りsoy cmsのモジュール管理でURLとサイトIDを取得してみました。

というのも、よく使うデザインテンプレートのCSS参照が相対参照で標準ページとブログページでは階層が違うのでコピペで使い回すことが出来ないんです。

絶対参照だと、テスト環境でsoy cmsのサイトを作って本番のサーバーへ移したりするときに、イチイチ書き直しが必要なので動的に絶対参照出来きる方法は無いかと考えてたどり着いたので「モジュール管理」「モジュール」です。

やり方は至って簡単。

モジュール管理でモジュールの新規作成をクリックしPHPを記述。今回は

<?php
//ここにモジュールとして読み込むHTML・PHPを記述してください。
//使用可能な変数
// $html テンプレートに記述されたHTML
// $htmlObj ページオブジェクト($htmlObj->createAdd()が使えます)
$host = $_SERVER["HTTP_HOST"];
$siteId = basename(_SITE_ROOT_);
echo "http://" . $host ."/" .$siteId;
?>

として保存

ページ編集でCSSのmetaタグに

<!-- cms:module="site.urlid" -->サイトURL+IDのモジュールを読み込みます。<!-- /cms:module="site.urlid" -->

と書いて以降はcssファイルの指定を書いて保存。

無事に動的に絶対参照が出来ました。

短く書きたい場合は

<!-- cms:module="site.urlid" /-->

とすればOKです。

もしかしたらsoy cms自体にcmsタグや@@で始まるタグがあるかもしてませんが、見つけられなかったのでモジュール化してみました。

他にも自前で設置しているアクセス解析CGIのアクセス解析用タグもモジュール化しました。

モジュールがあれば同じスクリプトを一つ書いてあとはタグで設置できるので修正が楽ちんですね。

ますますsoy cmsが使いやすくなりました。


サイトのデザインを変更してみた。 レスポンシブ対応

日記

soy cms久しぶりにsoy cmsのバージョンアップを行ったついでに、デザインも変更してみました。

Google先生はレスポンシブ対応がお好きなみたいなので、このサイトもレスポンシブにしてみました。

soy cmsにはガラケー用の「携帯ページ」や携帯振り分けプラグインなどが同梱されていますが、もう世の中スマホが全盛でしょうから、レスポンシブデザインだけ導入して携帯ページは、スッパリと割愛しました。

テンプレートはHTMLで作られているものを使用しています。

soy cmsへの対応はかなり手軽に可能でした。この辺りはHTMLと共存できるsoy cmsの強みですね。

最近更新が滞っているsoy cmsですが、そろそろPHP5.2必須からPHP5.3とか5.4になりそうなのでサーバーの移転も考えている今日このごろです。

PHP5.2でsoy cms 1.8.6以降のエラー回避について

soycms

なるべく新しいsoy cmsを利用したくて、結構頻繁にバージョンアップしていましたが、soy cms 1.8.6以降では管理画面には入れるけど公開ページが真っ白なので、soy cms 1.8.5を使い続けていました。

このサイトで使っているラクサバもPHP5.2.17です。
公式サイトではPHP5.2以降、推奨環境が5.2.20以降となっていますのでラクサバは非推奨環境ですね。

しかし仕事でPHP5.2.17でsoy cmsをインストールすることになり、最新の1.8.12をインストールしましたが、やはり公開ページは真っ白。

仕方ないのでエラーログを見て原因を調べてみました。

エラーログの場所はsoy cmsインストールディレクトリの/common/log/error-******.log

(******は西暦と月、2015年11月分のログはerror-201511.log)

これをダウンロードして開いてエラーを確認。

>PHP Parse error:  syntax error, unexpected T_FUNCTION in /soyをインストールしたディレクトリ/common/site_include/CMSBlogPage.class.php on line 280
>PHP Parse error:  syntax error, unexpected T_FUNCTION in /soyをインストールしたディレクトリ/common/site_include/DateLabel.class.php on line 39

CMSBlogPage.class.phpとDateLabel.class.phpの2つのファイルがエラーを吐いています。

エラー箇所近辺のコードを見ると共通してPHP5.3.0.0以降かどうかのif文での条件分岐でエラーを吐いています。

        >//条件付きフォーマット
        >if(version_compare(PHP_VERSION, '5.3.0', '>=0')){
        >   //preg_replaceのeオプションは5.5.0で非推奨になった
        >  //preg_replace_callbackは4.0.5から使えるが無名関数は5.3.0以降
       >     $time = $this->time; $year = $this->year; $month = $this->month; $day = $this->day;
       >    $format = preg_replace_callback("/%DATE:([^%]*)%/u",function($m) use ($time) {return date($m[1],$time);},$format);
       >     $format = preg_replace_callback('/%Y:([^%]*)%/u',function($m) use ($time, $year)  {return strlen($year)  ? date($m[1],$time) : '';},$format);
       >     $format = preg_replace_callback('/%M:([^%]*)%/u',function($m) use ($time, $month) {return strlen($month) ? date($m[1],$time) : '';},$format);
       >     $format = preg_replace_callback('/%D:([^%]*)%/u',function($m) use ($time, $day)   {return strlen($day)   ? date($m[1],$time) : '';},$format);
       > }else{
       >    $format = preg_replace("/%DATE:([^%]*)%/e","date('\\1',\$this->time)",$format);
       >     $format = preg_replace('/%Y:([^%]*)%/e',"strlen(\$this->year)  ? date('\\1',\$this->time) : ''",$format);
       >     $format = preg_replace('/%M:([^%]*)%/e',"strlen(\$this->month) ? date('\\1',\$this->time) : ''",$format);
       >    $format = preg_replace('/%D:([^%]*)%/e',"strlen(\$this->day)    ? date('\\1',\$this->time) : ''",$format);
       > }

PHPはほとんど触ったことがないし面倒くさかったので、PHP5.3.0かどうかのif分をまるごと削除しました。

強引ですがこれでPHP5.2環境でも動作しました。


<< 1 >> 1ページ中1ページ目