【CakePHP3】Error: SQLSTATE[HY000]: General error: 8 attempt to write a readonly databaseが出たときの対処法




CakePHP3をインストールして、ブラウザからwebrootのindex.phpを開こうとしたところ下のエラーが出ました。見た目がおぞましいです。

エラー画面

結論から言えば、(app名)のフォルダ(srcフォルダやconfigフォルダなどが入っている)の「tmp」と「logs」のパーミッションを直せば、解決しました。

cakePHPの公式ページの「パーミッション」という段落にも記載がありますが、cakePHPを使う上でapacheやnginxなどのウェブサーバーがtmpフォルダとlogsフォルダにアクセスする必要があります。

そのため、今回のようにパーミッションを777にしてしまったり(707でも動きます)、あるいはchownでそもそも所有者をwwwにすることでウェブサーバーがアクセスできるようにします。

これでも直らない場合は、config/app.phpの254行目付近「’Datasources’」の項目の設定を見直してみてください。DataBaseとの接続設定はここで行っているので、ユーザー名やパスワードが間違っている可能性があります。