WordPressでwp-config.phpはあっているのにデータベース接続確立エラーとなる場合

WordPressで気づいたら「データベース接続確立エラー」となっていた。コンソールからmysqlコマンドでは接続できるし、wp-config.phpを何度見直しても合っている…

落ち着いて、
/var/log/mysqld.log
を確認したところ、
[ERROR] /usr/sbin/mysqld: Table ‘wp_options’ is marked as crashed and should be repaired
と出ていた。

そこで、再度、mysqlコマンドで接続し、
repair table wp_options;
を実行したところ、
wp_options repair status OK
と表示され、無事、復旧しました。

H.264のライセンス料

動画を保存するアプリケーションを作成したくて、H.264のライセンス料について、MPEG LAに問い合わせをしてみました。

MPEG LA
https://www.mpegla.com/

結果としては、製品にエンコーダーとデコーダーが一つずつとして、暦年で年間100,000以内の製品であれば、ライセンス料金がかからない、と回答が来ました(2019年6月現在)。

これだと、大量生産系の製品でない限りはライセンス料金について心配しなくて良さそうです。

VirtualBoxを再インストールしたあとでVagrantをつかう

VirtualBoxを6.0.6以降にアップデートした後、Vagrantの2.2.4だと、Guest Additionがどうにも使いにくいので、VirtualBoxを6.0.4で再インストールしました。

で、Vagrantからそれまでの仮想環境を起動するために行った手順です。

参考にさせていただいたのはこのページです。

VirtualBoxとVagrantの紐付けをやり直す方法
https://qiita.com/kayo_h/items/a6fe507b87170c90fe89

まず、VirtualBoxを起動し、既存の仮想マシンを追加します。
その上で、
$ VBoxManage list vms
として、{}で囲まれているidを、
.vagrant/machines/default/virtualbox/id
に書き換えます。

あとは、これまで通り、
$ vagrant up
で起動できるようになりました。

Pydio Cellsがいい感じ

お客さまから、図面などの文書ファイルを安全に提供したいんだけど…とのご相談をいただきました。

結論としてはPydio Cells(https://pydio.com/)がいい感じでしたのでご紹介です。

これまでは宅ファイル便などの外部サービスを使って来たのだけれども、情報流出の事故のニュースが続いているので、自社サーバで提供するよう経営層から言われている、とのこと。

正直なところ、自社で持つ方がもっと危ないとは思うのですが…

まずは、DropboxやOneDrive、Googleドライブと言ったクラウドドライブ系ですが、共有を制限するのが難しく、1対多に個別に文書を提供する、という使い方に向いていません。

FTP(SFTP)を含むファイルサーバー系が実は一番手堅いと思うのですが、Webminなどを使ったとしても、お客さまがOSのユーザーを管理するのが難しそうです。

その点、Pydio Cellsは、Cell(フォルダやディレクトリのようなもの)単位で権限を設定でき、かつ、ユーザーもチーム(グループのようなもの)でくくることが出来ます。

セットアップも基本的にはバイナリの設置なので、公式ページの説明に従えばなんとかなると思います。

利用プロセス数が多かったり、サーバー負荷がそこそこ高いので、サーバーのメモリは多めに確保してあげるといいと思います。


CakePHP3でのビューでのユーザー情報の表示

CakePHP 3で、ビューにどうやってAuth->Userの情報を表示させようか検討しました。

簡単なのは、
$this->request->getSession()->read(‘Auth.User.name’)
のようにセッション変数から取得することなのですが、コントローラーの制御から外れて、ビューが勝手に値を取得しているような気がしてモヤモヤしていました。

一方、
$this->Auth->user(‘name’)
のような書き方もビューでは出来ないし…

そこで、AppControler.phpのbeforeRenderで値をsetして、ビューから統一的に変数から取得することにしました。

具体的には、AppController.phpに下記のコードを追記します。

public function beforeRender(Event $event) {
       if ($this->Auth !== null) {
          $this->set(‘auth_user’, $this->Auth->user());
      } else {
          $this->set(‘auth_user’, null);
      }
}

また、エラー時に、ErrorControllerでAuthがない、と落ちてしまうので、ErrorController.phpのbeforeRenderにも追記します。

public function beforeRender(Event $event) {
    //エラーが発生した時にAuthがないnoticeが発生するためnullをセットする
   $this->Auth = null;
   parent::beforeRender($event);
}

これで、どのビューでも$auth_user->nameと統一的に扱うことが出来るようになりました。変なこだわりだな、とは思いましたが、スッキリしました。

CakePHP 3.7でのお話でした。