scuttleを今更導入
さくらインターネットののレンタルサーバにscuttleを入れるべく苦闘した。ですます調とである調+体言止めが混じっていますが、ご容赦を。
結論から言うと、注意点は2つ。
1つは、さくらインターネットのMySQLのcharacter_set_serverがujisなのが問題だった事。
includes/db/mysql.phpのmysql_query()を実行している場所の手前に全て、「mysql_query(“set names utf8”);」を追加した。
もう一つは、web上に多くでいる情報である、「さくらインターネットでは$_SERVER[‘PATH_INFO’] という記述を $_SERVER[‘ORIG_PATH_INFO’] に置換」が、仕様変更により不要になっている事。
参考にしたのは以下のサイト。
- SourceForge.net: Scuttle: Files
- Web Seeker – ソフトウェアインストールMEMO – Scuttle
- (旧)sideblue weblog | [SC] Scuttle をインストールしてみた
- Scuttle ( サーバインストール型 SBM ) 導入メモ | Bowz::Notebook
基本は、「Web Seeker – ソフトウェアインストールMEMO – Scuttle」を参考にした。
しかし、前述の通り、「さくらインターネットでは$_SERVER[‘PATH_INFO’] という記述を $_SERVER[‘ORIG_PATH_INFO’] に置換」が、仕様変更により不要なので置換しないように。私はこれに気づくまでに、まず3時間は時間を潰しました。
そして、character_set_serverの問題だが、まず、確認方法から。
さくらインターネットののレンタルサーバではサーバコントロールパネルの[アプリケーションの設定]にある[データベースの設定]からデータベースの[管理ツール]を呼び出す。
そして、[SQL]タブで「SHOW VARIABLES;」と入力して実行し、環境を見ると「character_set_server:ujis」となっているのが判る。
他のcharacter_setはutf8なのに…。これのせいで、文字コード関係のエラーが多発しました。私はこれで5時間は時間を潰しました。
折角、MySQLの文字セットがutf8なのに、台無しです。
そこで、「これから行う処理は全部utfでよろしく!」の意味の命令である「mysql_query(“set names utf8”);」を追加しました。
まず、[管理ツール]の自分が使うデータベースを選んで[操作]タブの一番下にある[照合順序]をutf_general_ciもしておく。
その後に「tables.sql」のSQLを[SQL]タブから入力してテーブルを作る。
さらに、前述の通り「includes/db/mysql.php」のmysql_query()を実行している場所の手前に全て、「mysql_query(“set names utf8”);」を追加。
また、bookmark時にurlを入力するとタイトルを補完してくれる機能も文字コード関係の問題を起していたので修正。
まず、「bookmarks.php」の
「preg_match_all(‘/
「preg_match_all(‘/
さらに、
「$encoding = strtoupper($matches[1][0]);」の後ろに
「if($encoding == “”){$encoding= “auto”;}」を追加。
ついでに、「ajazGetTitle.php」の
「// ADD A BOOKMARK」以下の「$title,$description,$categories」を「trim($_POST[XXX]);」で取得した後に、確実にutf-8に変換するように小細工。「$title = mb_convert_encoding($title, “UTF-8”, “auto”);$description = mb_convert_encoding($description, “UTF-8”, “auto”);$status = mb_convert_encoding($status, “UTF-8”, “auto”);$categories = mb_convert_encoding($categories, “UTF-8”, “auto”);」
最後のは、いらないかもしれません。
何はともあれ、blogにwordpress、サイトのJoomlaを入れる時の参考にはなりそうな経験が積めたので良しとします。