hetemlにConcrete5 5.7系をインストールして日本語で使おうと思ったらハマった。
前々からConcrete5には興味があったのですが、PHPカンファレンスのブースにて、Concrete5 Japanの菱川さんに色々ご相談させていただき、早速ローカル環境にインストール。
会社のMTGにて簡単にプレゼンテーションをすべく手元にあった手頃なサーバ、hetemlにインストールしようとしたところ、怪しい大量の文字列が吐き出されるという現象が・・・。
ハマるまでの流れ(普通はこれでインストールできるはずガイド)
5.6系は、何の問題もなく動いていたので、Concrete5日本語公式サイトから最新の5.7.0.4をダウンロード。
解凍したファイルを、サーバにアップロード。初回は解凍してアップロードしたのですが、結構時間がかかったので、怖くなければzipファイルをアップロードして、SSHからコマンドのunzipしたほうが良いと思います。
インストール
アップロードした場所にブラウザからアクセス。
こんな感じで言語を聞かれるので、とりあえず日本語で進めました!
おっと、何やら設定されてるメモリが足りないと怒られていますね。
軽やかにhetemlの管理画面でphp.iniを編集しましょう。
Concrete5は64MB欲しいと言っているようなので、「そのほか」の中にある、memory_limitの項目を100に設定。
設定してインストール画面を再読み込みすれば無事、メモリが足りているようで、インストールへ進む事ができました。
DB情報などの設定項目を入力し、いざフルサイトでインストール!
プログレスバーが動き出し、インストールが進んで行きます。
インストール完了!
やったね!最高に簡単!と思ったのもつかの間。
編集モードに切り替えた途端、
こんな感じの謎の文字列が・・・・。
ブラウザの文字エンコードを変えても直らず、出力されているHTMLのソースを確認することに。
<header> <div class="container"> <div class="row"> <div class="col-sm-4 col-xs-6"> 㰿灨瀠ਯ⨠䍡捨敫敹㨠捡捨支獴慳桟摥晡畬(以下略)
何やら文字化けというかなんというか、変な文字列が生成されているようですね。。。
疑うべきはMySQLとphp.ini?
というわけでさっきも触っていたphp.iniの設定を見直し。
mbstring.internal_encoding : UTF-8
mbstring.language : neutral
default_charset : UTF-8
と、注意すべきポイントは一応ドキュメント通り・・・。
MySQLは・・・
oops!
データ接続の照合順序がutf8mb4_general_ciになっているじゃないか・・・。
何度utf8_general_ciにしても直らない・・・・。というか強制的にutf8mb4_general_ciにされてしまう・・・。
菱川さんのfacebookでシェアしていただき(ここから派生してDB照合順序については日本語公式フォーラムでトピックをたてていただきました!)、色々と有用な情報を頂いたりしているのですが、なかなか原因の特定には至らず。
試しに言語を英語にしてみると、怪しい文字列が消えるものの、日本語に戻すと再度現れる・・・。
ユーザーフォーラムの情報で、英語でインストールしてから日本語に変更してもやはりヤツは現れるのです。
vagrantではしっかり日本語で動いているのです。。。
別にhetemlでなくても良いのですが、せっかくなので動かしたいじゃないですか・・・。
というわけで、引き続き時間を見つけて問題を探っていきますか・・・。