以前作成したWebサイトで、BaserCMS 1.6.15 のまま利用しているサイトがあるのだけれど、2.X系にバージョンアップするためにはテンプレートの再調整・プラグインの再カスタマイズが必要なこと、管理画面のインターフェイスが大きく変わってしまったために、トレーニングコストが馬鹿にならないことなどから、アップデートを控えていた。
幸いBaserCMS自体には大きな脆弱性も発見されず( この脆弱性 にはファイルパッチで対応できたし)、運用できていたのだが、BaserCMSが依存しているPHPフレームワークであるCakePHPに、今年4月末 Paginatorコンポーネントに大きな脆弱性 が発見された。この対処を行った際の内容をメモしておく。
CakePHPフレームワークを利用したことがなかったので、フレームワークだけのバージョンアップとかどうするんだろうなーと思っていたが、色々調べて試したところ、どうやら cake ディレクトリの中身を上書きすれば大丈夫っぽかったので、BaserCMSに利用されているファイル・ディレクトリを選んで上書きした。
BaserCMS 1.6.15で利用されているCakePHPは1.2.10なので、最新版の1.2.12を以下からダウンロードする。
アーカイブの中から、cake フォルダのみ解凍し、その中から以下のファイル・ディレクトリを上書きアップロードする。(libs ディレクトリだけで大丈夫という情報もあったけど、念のために)
これでCakePHPは1.2.12となり、BaserCMSの管理画面から、システム設定‐環境情報 とたどることで、アップデートされているか確認できるようになる。(下記画像参照)
自分の環境ではこの方法で問題は起こっていませんが、全ての環境で問題が出ないとは限らないので、事前のバックアップやテストは確実に行ってください。また、この方法で脆弱性に正しく対応できているかどうかは保証できませんので、対応として間違っているとか、もっといい方法があるという情報があれば、ぜひコメント等より教えてください。
現在、このブログがある さくらのVPS では、PHP 5.3系を使いたいのでremiレポジトリを有効にして、yumでアップデートなどを行っているのだけど、そこで発生したトラブルについてメモがてら。
昨日アップデートをしたら、大量のアップデートに混じってMySQLも5.1系から5.5系にバージョンアップされたらしく、起動しなくなっていた。MySQLのログを見ると、
[ERROR] /usr/libexec/mysqld: unknown variable 'default-character-set=ujis'
[ERROR] Aborting
となって終了している。
MySQL MLの投稿
http://www.mysql.gr.jp/mysqlml/mysql/msg/15436
によると、5.5系では [mysqld] 内では default-character-set が利用できなくなっているとのことなので(ただし [client], [mysql], [mysqldump] では問題なく利用できている)、代わりに /etc/my.cnf に
character-set-server = ujis
と書いてやることで無事起動するようになった。
が、以下のようなエラーも吐かれていたので、こちらにも対処する。
[ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
mysqld を起動しておいた状態で、
# mysql_upgrade -u root -p
として root パスワードを入力すると、データベースがチェックされ、問題なく全て OK となった。再起動後もエラーは出なくなったようだ。
そして、ここまでやった後に、下記サイト様を発見。
【MySQL】5.1から5.5へのアップグレード(rpmで)
http://www.softel.co.jp/blogs/tech/archives/2288
yumだったからか、私の場合は全く警告も出なかったけれど、データベースのダンプくらいは取っておくべきだったなと、今さらながらガクブル。ま、問題は出なかったから、よしとしよう。(mysqldumpしながら)
photo credit: TAKA@P.P.R.S
メール保管術の後編は、まともに作ってると時間がかかるので、ちょいとブレイクということでこんな話題。
いい話というのは多分いろんなところで書かれてるので、ここでは3.6から4にアップデートして、困った話とか。