MacでCakePHPを使ったWebアプリ開発をしたいので手順を調査
スーパーしょしんしゃなので当たり前のこともいちいちメモしています
環境状況
- Mac OS Catalina 10.15.2
- HomebrewでPHP, composer, Apacheをインストール済み
- PHP7.3
調べてわかったこと
- CakePHPは依存性管理ツールcomposerを使ってインストールする(公式より)
- MacでCakePHPのインストールをすると「intlがない」と言われがち
- 今はHomebrewでintlをインストールはできないので
brew install intl
が書いてあったらスルー1
- 今はHomebrewでintlをインストールはできないので
- mbstringとsimplexmlはHomebrewでインストールしたPHPなら初めから入ってそう(参考 - Qiita)
必要なもの
公式より
- HTTP サーバー(Apache)
- PHP 5.6 以上 (PHP 7.4 も含む)
- mbstring PHP 拡張
- intl PHP 拡張 ← 実際いなかったのでインストールした
- simplexml PHP 拡張
intlのインストール
【pecl?brew?】MacのPHPのintlインストール方法 | Suwaru
-
$ php -m | grep intl
→ ない - PATHが通っているか確認 → 通ってなかった(
$ which php
→/usr/bin/php
) - PATHを通す(
$ export PATH=/usr/local/bin:$PATH
) - Terminalを開き直す ※やってない
- PHPを上書きで設定し直す(
$ brew link --force php@7.3
) - 確認 ↓
$ which php
/usr/local/bin/php
$ php -m | grep intl
intl
出ました~
「PATHを通す」について
PATHを通すの意味がよくわかっていなかったけど、
コマンド検索パス(コマンドサーチパス)2を追加することらしい
$ which ○○
で○○コマンドの実行ファイルがどこに格納されているのか確認できる
(参考 - Qiita)
PATHの通し方については以下参照
macでPATHを通す方法 | Qiita
手順
公式のやり方
一旦整理
バージョンはCakePHP3.8
クイックスタートガイド
インストール
※内容はほぼ一緒
1. PHPのバージョンを確認
$ php -v
PHP 5.6 (CLI) 以上がインストールされていることを確認
2. Composerのインストール
公式だとMacでのインストール方法がよくわからなかったので、Macのやり方で調べて頻繁に見かけたものを記載
→ 公式のやつでもできそう?(参考 - Awesome Blog)
$ # curlコマンドでComposerインストーラを取得
$ # インストーラをPHPで実行
$ curl -sS https://getcomposer.org/installer | php
$ # composerコマンドとして利用できるようにするためにフォルダ移動
$ mv composer.phar /usr/local/bin/composer
$ # ターミナルを再起動
$ # きちんとできているか確認
$ which composer
$ composer -V
※Homebrewでインストール(brew install composer
)した場合、PATHを通すのは勝手にやってくれてるっぽい
☆ curlコマンド
HTTPアクセスをしてコンテンツを取得できるコマンド
Linuxに入っているwget
コマンドのMac版
(参考 - hydroculのメモ)
☆ -sSオプション
ダウンロードの進捗状況は表示させないが、エラーがあればメッセージを表示する
(参考 - とあるプログラマの資産形成ブログ)
3. CakePHPプロジェクト作成
CakePHPの新しいアプリケーションを作成
プロジェクトを作成したい場所で以下のコマンドを実行
$ php composer.phar create-project --prefer-dist cakephp/app:3.8 プロジェクト名
$ # Composerにパスが通ってる(コマンドとして使えるようにしてある)場合は以下でも可能
$ composer self-update && composer create-project --prefer-dist cakephp/app:3.8 プロジェクト名
$ composer 〜
の方で実行
実行結果(折り畳み)
You are already using composer version 1.9.2 (stable channel).
Installing cakephp/app (3.8.0)
- Installing cakephp/app (3.8.0): Downloading (100%)
Created project in my_app_name
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 78 installs, 0 updates, 0 removals
$ # 以下略
一度 Composer がアプリケーションの雛形とコアライブラリーをダウンロードしたら、 インストールした CakePHP アプリケーションを Composer から操作できるように しておくべきです。 必ず composer.json と composer.lock ファイルは残しておきましょう。
だそうです
はて
4. インストールの確認(サーバ接続)
開発用サーバの場合
デフォルトホームページを確認してインストールが正しいことを確かめるために、開発用サーバーを起動する
$ # (3.で作成したプロジェクト)
$ cd /path/to/our/app
$ bin/cake server
実行結果(折り畳み)
Welcome to CakePHP v3.8.8 Console
---------------------------------------------------------------
App : src
Path: /Users/ユーザ名/my_app_name/src/
DocumentRoot: /Users/ユーザ名/my_app_name/webroot
Ini Path:
---------------------------------------------------------------
built-in server is running in http://localhost:8765/
You can exit with `CTRL-C`
[Thu Jan 23 23:22:18 2020] [::1]:49580 [200]: /css/base.css
[Thu Jan 23 23:22:18 2020] [::1]:49582 [200]: /css/style.css
[Thu Jan 23 23:22:18 2020] [::1]:49583 [200]: /css/home.css
[Thu Jan 23 23:22:19 2020] [::1]:49585 [200]: /img/cake.logo.svg
[Thu Jan 23 23:22:19 2020] [::1]:49587 [200]: /font/cakedingbats-webfont.woff2
[Thu Jan 23 23:22:20 2020] [::1]:49594 [200]: /favicon.ico
→ http://localhost:8765/ にアクセス3
(追記)
$ cd /path/to/our/app
やったら、「そんなものはない」と言われたので、
後述のように作成したプロジェクトに移動しました
公開用サーバの場合
http://www.example.com**でアクセスできるようにする
→ Apacheでやる場合はDocumentRoot
を変更する権限**が必要になる(かも)
インストール時に指定したフォルダは以下のような構成になる
/my_app_name/
bin/
config/
logs/
plugins/
src/
tests/
tmp/
vendor/
webroot/ ←←← DocumentRootになるやつ
.gitignore
.htaccess
.travis.yml
composer.json
index.php
phpunit.xml.dist
README.md
Apacheを利用している場合は以下のように指定
$ DocumentRoot /my_app_name/webroot
→ Webサーバが正しく設定されていれば http://www.example.com からCakePHPアプリケーションにアクセスできる
※開発用サーバの$ bin/cake server
実行結果で
DocumentRoot: /Users/ユーザ名/my_app_name/webroot
とあるので、開発用サーバを既に動かしていたらDocumentRootの指定いらない?
5. mod_rewriteの設定
リンク切れを解消するために設定する
必須なのかがよくわからない
難しかったので自分がぶち当たるまでは放置
その他調べて出てきた方法
■ 起動の確認方法
$ # 起動の確認(別ターミナルで行う)
$ curl -I http://localhost:8765/
$ # ポート番号の確認(別ターミナルで行う)
$ lsof -i:8765
終了はCtrl+ C
(参考 - Qiita)
うまくいったら
データベース接続に進む
→ 進んだ