先日頑張ってCakePHPのインストールをしました
次はCakePHP開発の始め方をお勉強します
スーパーしょしんしゃなので当たり前のこともいちいちメモしています
環境状況
- Mac OS Catalina 10.15.2
- HomebrewでApache, MySQL, PHPをインストール済み
- Apache(バージョンは後日記述)
- MySQL 8.0
- PHP 7.3
- CakePHP 3.8
調べてわかったこと
- フレームワークを使うにはMVCモデルを理解しないといけない1
- そもそも「PHPでできること」として具体的な処理や機能がいろいろある
-
bake
コマンドというやつで楽できそう
基礎知識
整理してたら全部長くなったので切りました
CakePHPインストール後の作業
公式のやり方
公式ベースですが、補填として以下URLも参照しています
【CakePHP入門】SQL(データベース)の基本を理解しよう! | 侍エンジニア塾ブログ
【PHP入門】CakePHP3とは?特徴から使い方まで徹底解説 | 侍エンジニア塾ブログ
忙しい人のためのCakePHP入門(by ドットインストール) | Qiita
config/app.phpにDB接続を設定
このファイルに定義された接続情報は、Cake\Datasource\ConnectionManager
2に引き渡される
(接続情報サンプル:config/app.default.php
)
※接続するデータベースは作成済みで想定
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
'username' => 'MySQLのユーザ名', # ☆
'password' => '上記ユーザのパスワード', # ☆
'database' => '作成したDB名', # ☆
'encoding' => 'utf8',
'timezone' => 'タイムゾーン',
'cacheMetadata' => true,
]
],
☆付きを自分のデータベースの設定に合わせる
その他の設定キーは公式参照
その他調べて出てきた方法
■ 一連の作業
1. プロジェクトの作成プロジェクトを作成したいディレクトリで以下のコマンドを実行
composer create-project --prefer-dist cakephp/app [プロジェクト名]
2. configの設定
作成したプロジェクト内のconfig/app.php
をテキストエディタでひらく
220行目付近、Datasourcesの*username
、password
、database
を作成したDBに沿って変更
3. タイムゾーンの設定
同じくDatasourcesで、236行目付近のtimezone
がデフォルトは「UTC
」になっているため、「Asia/Tokyo
」に変更
config/bootstrap.php
の96行目付近のtimezone
も「Asia/Tokyo
*」へ変更
4. MVCに沿ってファイルの作成
Model、View、Controllerのファイルをそれぞれ作成し開発に進む。
☆ このサイトだとphpMyAdmin
とやらをしれっと使っていて、
そいつが何者なのかよくわからないのでうまく動かないかもしれない
☆「4. MVCに沿ってファイルの作成」についてはこちらを参照する
■ bakeコマンドでMVCを作る
作成したCakePHPプロジェクトフォルダ内のapp.php
に接続するDBを指定
↓
扱うテーブルを作成(実行結果がわかりやすいようにデータもいくつか入れておく)
↓
bakeコマンドでMVCを自動生成する(できる!)
(参考 - 侍エンジニア塾ブログ)
このあとに指示通りURLアクセスをすると対象のテーブルを操作できるようになってる
実際にやってみて
ここまでに記載したやり方で進めていきました
つまづいたところをメモします
DBの接続がうまくいかない
MVCを作成しようとしてもエラーが出続けた
いろいろやっていくうちにMySQLが「PIDファイルがなんやかんや」しか言わなくなったので
一度きれいにして入れ直した(きれいにするのが大事かも)
更に見てみたら不穏なものがいろいろあった
■ .bash_profile
のPATH記述がしっちゃかめっちゃか
PHPインストールとかMySQLインストールとかで調べたときに
出てきた通りに$ echo "export PATH=...
をやってたので
ファイルの中を見たら
・PATHが重複(めっちゃ大量)
・微妙にパスが違う(/usr/local/opt/
じゃない)
・入れてないバージョンのがある(最初よくわからなくて調べて出てきた通りに入力してた)
・クォーテーションがあったりなかったりする
などなど
とにかくなんか汚かった
export PATH="/usr/local/opt/php/bin:$PATH"
export PATH="/usr/local/opt/php/bin:$PATH"
export PATH="/usr/local/opt/php/bin:$PATH"
export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"
export PATH="/usr/local/opt/mysql/bin:$PATH"
export PATH="/usr/local/opt/mysql@/bin:$PATH"
export PATH="/usr/local/Cellar/mysql/bin:$PATH"
なんかこんな感じ
→ 必要な分だけにして、export PATH="/usr/local/opt/対象/bin:$PATH"
に統一3
(sbin
ていうのもあったけどよくわからなかったのでそれは放置)
export PATH="/usr/local/opt/php/bin:$PATH"
export PATH="/usr/local/opt/mysql/8.0.19/bin:$PATH"
■ パスワードポリシーの設定
(詳しい内容は後日ログ見て書き直します)
ターミナルからMySQLのユーザ作成を行ったときにパスワードポリシーで引っかかったので
調べてできたvalidate-password=OFF
をmy.cnf
に書いたけど
PIDファイル系のエラーが出まくった
MySQL8.0からパスワードポリシーのプラグインがなくなってコンポーネントになったらしい(???)
コンポーネント>プラグインで処理が採用されるため、
コンポーネントの書き方で設定しないといけないらしい
[mysqld]
# validate-password=OFF
validate_password.policy=LOW
これでできました
(参考 - ディーネット 技術情報ブログ)
おわり
MySQLが何回やってもしにまくるのでいじるのがこわくなりました
もうしなないでほしい