CakePHPハマったの対策


はじめに

解決が根本的なものか定かではありません。
少し前に進む手助けとなると思って書いてます。

少しずつ増やしていきそうです!
ちょっとメモ的なので絵文字とかそんな多くないです。(。・ω・。)そこ?そこなのか!???

早速

Argument 1 passed to Cake\Http\Session::_overwrite() must be of the type array, null given, called in /var/www/html/vendor/cakephp/cakephp/src/Http/Session.php on line

内容:overwriteの関数、配列入れるじゃないとダメなんですが、、、nullあたえとるやろ!(。・ω・。)お怒りのようですね、、、

対策0:キャッシュのセッションIDが残っているから不都合起きているみたいなのでブラウザのキャッシュ削除。根本的な対策ではないですが、、

対策1:ファイル権限の問題の時にでました。

$ chmod 777 /Users/****/Docker/cakePHP/apach/html/tmp/cache/models/myapp_cake_model_default_articles_tags

※/Users/****/Docker/cakePHP/apach/html/は適宜変更
※myapp_cake_model_default_articles_tagsは適宜変更

を打つと左図から右図のようになります。
あ、なっていないのは全部やってください。

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mydb01.user_sessions' doesn't exist

対策0:
そもそもテーブルがないかもしれないのでテーブルがあるかの確認。

対策1:
内容:user_sessionsっていう感じのtabelやviewありません!!(。・ω・。)ふ〜〜〜ん

対策:user_sessionsのテーブルないならそこを探さないようにしました。強行突破!

'handler' => [
    'engine' => 'DatabaseSession',
    'model'  => 'UserSessions'  // DB table name is user_sessions
],

のような記述場所あるので以下のようにコメントアウト

'handler' => [
    //'engine' => 'DatabaseSession',
    //'model'  => 'UserSessions'  // DB table name is user_sessions
],

https://book.cakephp.org/4/ja/development/sessions.html
は読んでおいた方が良さそう、、、

対策2:

変なところでpr();的にデバッグ入れてるとでました。

SQLSTATE[HY000]: General error: 8 attempt to write a readonly database

エラー内容あっているか少し不安

内容:書き込みたいのに読み取り専用になってる!どないしよ!(。・ω・。)どないしよ!

対策:書き込みできるように権限を与える

$ chmod -R 777 /Users/***/Docker/cakePHP/apach/html/sample/tmp
$ chmod -R 777 /Users/***/Docker/cakePHP/apach/html/sample/logs

※/Users/***/Docker/cakePHP/apach/html/sample/は適宜変更

ちなみにDockerにあるからとDockerコンテナ中で行っているかもですが私の場合macにフォルダがあるのでmacの方から権限変更しないとダメでした。確か、、、

さらにちなみにこれ公式にも書いてあります以下
https://book.cakephp.org/4/ja/installation.html#id8

CakePHP は、幾つかの操作のために tmp ディレクトリーを使用します。 モデルの定義や、ビューのキャッシュ、セッション情報などです。 logs ディレクトリーは、デフォルトの FileLog エンジンがログファイルを 出力するために使われます。

そのため、 CakePHP をインストールしたら logs, tmp ディレクトリーと その全てのサブディレクトリーに、ウェブサーバーの実行ユーザーによる書き込み権限があることを 必ず確認してください。

ちなみに全画面以下感じです!

終わりに

あとなんでCakePHPでlaravelとかでないかって???
CakePHPという名前の方が断然私とあうと思ったから。ケーキ!ケーキ!
と言うのとCakePHPの方がドキュメント多そうって。
っと思ったけどってなったので自分で記事をあげるといったやつです(o*。_。)o
というかPythonのDiangoとCakePHPで悩んでいて、もし誰かと何かやるってなった時CakePHPの方がなんか色々な面で良さそうかなと。自分の将来的な価値?より誰かとやりやすそうな方を優先しました。一緒にやってくれる人がいたらの話ですが、、、。