NetCommons3で困惑
本サイトはWordPressで作っているが、私の属するグループのサイトはさくらインターネット・スタンダード上にNetCommons2で構築しており、このサイトをNetCommons3に移行させようと考えていた。
昨年NetCommons3.14をPHP5.6/Mysql5.5にインストールできていたが、今インストールしようとしてMysqlを新規に登録すると、Mysql5.7しか選ぶことができない。Mysql5.7ではインストール後ログインして「管理」の「会員管理」を開くと「内部エラー」になる。
Mysql5.5で動作してもMysql5.7で動かないのでは、NetCommons3を安心して使うことができない。
この問題は2018年1月にNetCommons3.16で発生することがgithubに報告されている。(以下は2018年6月23日に情報更新しましたが、その同じ頃、githubの別項に当面の解決策が提示されました。)
エラーメッセージによれば、Mysql5.7のsql_modeにONLY_FULL_GROUP_BYが設定されていることが原因というのだが、共有レンタルサーバでユーザがこのsql_modeを変更することができそうもない。以下はその状況。
Tera Termを使ってSSHでwebサーバーにログインして、更にmysqlサーバーにログインすると、
mysql> SELECT @@GLOBAL.sql_mode; でsql_modeの設定内容を確認できる。
SET SESSION sql_mode = ‘ ‘;で現セッションのsql_modeの設定を空にできるのだが、SET GLOBAL sql_mode = ‘ ‘;は管理者権限がないため拒否される。
また、MySQL5.7ではホームディレクトリにmy.cnfを置くことができ、このmy.cnfにsql_modeの設定を書けば、この内容が他の場所のmy.cnfより優先されるという。しかし、my.cnfを読み込ませるためには、MySQLの再起動が必要であり、その再起動が共有サーバーでは自由にできない。
NetCommons3の動作環境として下記のように書かれている。
● MySQL5.5以上(※sql_modeがSTRICT_TRANS_TABLESだと正常に動作しません)
しかし、さくらインターネットのスタンダードではsql_modeにSTRICT_TRANS_TABLESは設定されておらず、この条件は満たしている。
この問題は、おそらくONLY_FULL_GROUP_BYでも動作するようにNetCommons3を修正しないと解決しないのではないか?
残念ながら、この問題は6月にリリースされた最新のNetCommons3.19でも解決していない。
本件、githubに当面の解決策が提示されました。そこに書かれた通り、app/Config/database.phpの中を2箇所追加修正すると、確かにエラーが出なくなりました。(6/26追記)
NetCommons3はVer2の時に比べて情報が少ない。定評ある安価なレンタルサーバにインストールできないようでは学校以外への普及が進まず、ユーザが減ってしまうのではないか?
ITサービスマネージメントのフレームワークでは、複雑なソフトなどを製品として出す場合、開発完了はリリース、本番環境に近い環境でテストすることをステージング、実際に本番環境に出荷することをデプロイメントと呼ぶそうである。NetCommons3では、開発人員不足でやむを得ないのだろうとは思うが、このステージングを省略しているようだ。