LoginSignup
2
1

More than 3 years have passed since last update.

CakePHPの始め方(Mac)を理解したい

Last updated at Posted at 2020-01-28

先日頑張って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インストール後の作業

公式のやり方

構成設定
DB接続設定

公式ベースですが、補填として以下URLも参照しています
【CakePHP入門】SQL(データベース)の基本を理解しよう! | 侍エンジニア塾ブログ
【PHP入門】CakePHP3とは?特徴から使い方まで徹底解説 | 侍エンジニア塾ブログ
忙しい人のためのCakePHP入門(by ドットインストール) | Qiita

config/app.phpにDB接続を設定

このファイルに定義された接続情報は、Cake\Datasource\ConnectionManager2に引き渡される
(接続情報サンプル:config/app.default.php

※接続するデータベースは作成済みで想定

app.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行目付近、Datasourcesusernamepassworddatabaseを作成した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/じゃない)
・入れてないバージョンのがある(最初よくわからなくて調べて出てきた通りに入力してた)
・クォーテーションがあったりなかったりする
などなど
とにかくなんか汚かった

.bash_profile
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=OFFmy.cnfに書いたけど
PIDファイル系のエラーが出まくった

MySQL8.0からパスワードポリシーのプラグインがなくなってコンポーネントになったらしい(???)
コンポーネント>プラグインで処理が採用されるため、
コンポーネントの書き方で設定しないといけないらしい

my.cnf
[mysqld]
# validate-password=OFF
validate_password.policy=LOW

これでできました
(参考 - ディーネット 技術情報ブログ

おわり

MySQLが何回やってもしにまくるのでいじるのがこわくなりました
もうしなないでほしい


  1. フレームワークはMVCモデルをもとに作られているため 

  2. アプリケーションが使用する接続構成を生成する 

  3. 正常に動いているPHPのPATHに合わせた 

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1