前回の記事で作成したシステムを流用する
データベース設定
データベースを作成
下記のテーブルとサンプルデータの挿入
https://book.cakephp.org/3.0/ja/tutorials-and-examples/blog/blog.html
config/app.php を編集
DBのユーザー名とDB名
cakeのスタート画面でDBの説明のところのアイコンが緑になればOK。(あれ?接続できてない)
MAMPのスタートページで確認したところCakeの設定ファイルに記載したパスワーが間違っていたので変更。再読み込みをかけたら無事接続できました
記事モデル作成
チュートリアルにあったコマンドを利用してモデルを作成しようとしたらエラーが出て作成できませんでした
コマンド
bin/cake bake model Articles
エラー
PHP Fatal error: You must enable the intl extension to use CakePHP.
intlと言うPHPの拡張子がない事が原因で引っかかっているぽいので入れようとしたのですが、多くのサイトに書かれていた下記のコマンドはHomebrewのアップデートにより使えなくなっていました
brew install php72-intl
すでに入っているPHPを削除して入れ直すしか方法は無いようです
入っているものの確認
$ brew list | grep php
php70
php@7.0
2つヒットしたのでとりあえず2つとも削除します
$ brew uninstall php70 php@7.0
homebrew/phpも削除します
brew untap homebrew/php
PHP7.2を新規インストールします(ちょっとかかります)
brew install php@7.2
注意点として、このコマンドではインストールはしますがパスは自分で通す必要があります。以下のようなメッセージが表示されるのでechoのところ2つを丸っとコピーしてインストールが終わったタイミングでターミナルで実行します
If you need to have php@7.2 first in your PATH run:
echo ‘export PATH=”/usr/local/opt/php@7.2/bin:$PATH”‘ >> ~/.bash_profile
echo ‘export PATH=”/usr/local/opt/php@7.2/sbin:$PATH”‘ >> ~/.bash_profile
~/.bash_profileファイルに上記2つのコマンドが記載されればOK
気を取り直してbin/cake bake model Articlesでモデルを作ろうとしたところ今度は別のエラーが発生
One moment while associations are detected.
Exception: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client in [/Applications/MAMP/htdocs/blog/vendor/cakephp/cakephp/src/Database/Driver.php, line 92]
cakeのスタート画面ではDB接続できている感じになっていたのですが、ソケットが見つからないらしい
config/app.phpファイルの’Datasources’ => [という欄に下記を追記
‘unix_socket’ => ‘/Applications/MAMP/tmp/mysql/mysql.sock’,
うまくいきました
作成したモデルファイルなどの編集は次回
(cake意外とめんどくさいぞ!)