会社の研修がきっかけでPHPを学習し始め、推奨されたフレームワークがCakePHPだった。CakePHPはMVCモデルを採用しているウェブアプリケーションフレームワークであり、Ruby on Railsの概念が取り入れられているらしい。
CakePHPについてググってみるだけでは不明点多しだったため、メルカリで「CakePHP超入門」という本を購入し早速ハンズオンしてみた。CakePHP用のDockerのimageを持っていたが、本に倣いcomposerを使った環境構築をした。だが三年前に出版された本ということもあり動かなかった点もあったため、備忘録ということで環境構築までの流れをまとめた。
環境
- macOS Big Sur: 11.2.3
- MAMP: 6.3
- PHP: 7.4.12
- CakePHP: 4.2.5
MAMPのインストール
MAMP PROでない無料のMAMPをインストール。
composerのコマンドをターミナルで入力
ターミナルでディレクトリ位置をDesktopに移動。composerホームページでトップページ→Download内にコマンドが公開されているので入力。するとDesktopにcomposer.pharというファイルが作成される。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
ターミナルが見ているPHPの確認
$ which php
ターミナルが見ているPHPはMacBook本体に入っているものか、MAMPのPHPかの確認。MAMPを起動し上記のコマンドを打つと、おそらく
/usr/bin/php
という結果が返ってくる。この結果をMAMPのPHPにする必要があるのでパスの指定が必要。
ちなみに…
/usr/bin/php
の状態でこの先進むと
Problem 1
- cakephp/cakephp[4.2.0, ..., 4.2.5] require ext-intl * -> it is missing from your system. Install or enable PHP's intl extension.
- Root composer.json requires cakephp/cakephp ~4.2.0 -> satisfiable by cakephp/cakephp[4.2.0, ..., 4.2.5].
後のコマンドでintl extensionがないという上記の警告が表示されてしまい動作がおかしくなる。(自分も悩みました)
MAMPのPHPのパスの指定
$ vi ~/.bashrc
$ export PATH=/Applications/MAMP/bin/php/php7.4.12/bin:$PATH
// :wq で保存
$ source ~/.bashrc
// 変更の反映
ターミナルで上記コマンドを実行することによってMAMPのPHPのパスが通ります。この設定後に $ which php
の実行で
/Applications/MAMP/bin/php/php7.4.12/bin/php
通りましたね!
CakePHPのコマンド実行!
composer.pharがDesktopにある状態かつディレクトリ位置もDesktopの状態で
php composer.phar create-project --prefer-dist cakephp/app アプリの名前
を実行し、permissionの確認でyを押すと、「アプリの名前」ディレクトリがDesktopに生成されました! その中にはbinやsrcなど多数入っています。そのディレクトリを丸ごと user/Applications/MAMP/htdocs
内に移動させ、ブラウザ環境で
http://localhost:8888/アプリの名前/
にアクセスすると、
環境構築完了しました! この画面がCakePHPのHello World! のようなものです。Databaseはまだ触っていないのでアイコンが赤くなっています。(Databaseの設定をすればアイコンが緑になる)
参考文献
・【CakePHP3系/MAMP】ComposerでCakePHP3系をインストール実行時、「Your requirements could not be resolved to an installable set of packages.」と怒られた時の解決方法
・viの基本的な使い方
・viで文字を削除するコマンド【色々な方法まとめました】