WindowsのXAMMP内でCakePHP3を導入する

開発環境は、Windows 7 Professional(32bit)+XAMPP 3.2.2。
CakePHPで、思いついたWebサービスを作ってみたいと思い、ローカル環境に導入した過程をメモします。
ここでは、XAMPPはすでに導入されている前提で、書いていきます。

1.環境変数PATHに、XAMPP内にあるphp.exeへのパス(自分の場合は、C:\xampp\php)を通します。(自分の場合はパスが通っていなかったので手動で通しました。)
2.コマンドプロンプトで、php -vと入力して、バージョンが、5.6.0以上であることを確認してください。
3.C:\xampp\phpディレクトリ内にあるphp.iniを開いて、extension=php_intl.dllの前についているセミコロンを外して保存してください。


1.ComposerというPHPのパッケージ管理システムのWindowsバージョンを下記サイトでダウンロードします。
今回は最新バージョンのComposer-Setup 4.8.0をダウンロード。
Releases · composer/windows-setup · GitHub
2.ダウンロードしたComposer-Setup.4.8.0.exeをインストール開始。
3.『Developer mode』にチェックを入れずに、『Next』ボタンをクリック。
4.phpの実行ファイル(php.exe)のある場所を指定して、『Next』ボタンをクリック。(自分の場合は、最初からphp.exeの場所が指定されてました)
5.『Use a proxy server~』にはチェックを入れずに、『Next』ボタンをクリック。
6.『Install』ボタンをクリック
7.インストールが終わったら、『Next』ボタンをクリックし、『Finish』ボタンをクリックする。
8.正常にインストールされたのかチェックするためにコマンドプロンプトを起動し、『composer』と入力する。
そして、以下の画像ようなものが出力されたら、インストール成功です。環境変数PATHは自動的に登録されています。
f:id:k01ken:20171224194133p:plain

1.コマンドプロンプトで、カレントディレクトリを、『c:\xampp\htdocs』にします。
2.コマンドプロンプトにて、以下のコマンドを入力します。

composer self-update && composer create-project --prefer-dist cakephp/app my_app_name

my_app_nameディレクトリが作成されて、その中を見ると、cakephpがインストールされています。
3.XAMPPのコントロールパネルを起動して、Apacheを起動して、Webブラウザで、localhost/my_app_name/と入力してアクセスします。
うまくいっていれば以下のようなページが出現します。
f:id:k01ken:20171224203418p:plain
4.サイトの中身を変えたければ、src/Template/Pagesディレクトリ内にあるhome.ctpをhome.ctp.txtにリネームして(まだ削除はしないでください。データベースとの接続のチェックや、初心者ユーザーだったら、Getting Startedの欄で、ブックマークサイトやブログやCMSの作り方を具体的な手順で教えてくれているので、次はそこをやったほうが良いです。)、自分で新しくhome.ctpを作成して、この場所に保存します。このファイルの中に書くのは、htmlのbodyタグ内に記述するものです。下記のソースコードで日本語を入力すると、現段階では、文字化けしますので注意。

<h1>Hello, CakePHP!</h1>

そうすると、ページ上部や下部にいらないパーツが、ついているものの、カスタマイズすることができます。
f:id:k01ken:20171224204459p:plain
5.XAMPPのデータベースと接続するには、XAMPPコントロールパネルのMySQLを立ち上げてから、
MySQLの『Admin』ボタンをクリックします。
6.phpMyAdminが起動したら、上部にある『データベース』ボタンをクリックします。
『データベース名』のテキストボックスに、データベース名を入力して、『作成』ボタンをクリックします。
7.上部にある『SQL』ボタンをクリックします。
8.事前に定義しておいたテーブルのSQL文をコピペして『実行』ボタンをクリックします。
9.my_app_name/config/app.php内にあるDatasourcesから
host:'localhost'
username:'root'
password:''
database:'作成したデータベース名'
に修正してください。接続に成功すると、先ほどhome.ctpを修正する前のトップページのDatabaseの欄にて、『CakePHP is able to connect to the database.』と表示されます。
f:id:k01ken:20180416071519p:plain

■Scaffold コードを用いて、モデル、ビュー、コントローラを自動的に作る
1.カレントディレクトリをアプリ名(今回はmy_app_name)に移動する。
2.bin\cake bake all テーブル名
というコマンドを入力すると、そのテーブル名と関係したコントローラ、モデル(エンティティとテーブル)、ビュー(index.ctp,view.ctp,edit.ctp,add.ctp)が自動的に生成されます。
あと、原因は不明ですが、これをやった後は、なぜか、home.ctpを日本語にしても文字化けにならなくなってます。
参考リンク
Bake でコード生成 - 3.6
インストール - 3.6

■開発用サーバーは、Apacheじゃなくて、CakePHPの組み込みサーバーを用いる
開発用サーバーをXAMPPからApacheを用いるのではなくて、CakePHPの組み込みサーバーを用いる方法があります。方法は、カレントディレクトリをアプリ名(今回はmy_app_name)に移動して、
bin\cake server
と入力するだけです。

もし、Apacheを用いると、アクセスする際のURLが、
localhost/作成したアプリ名
となりますが、組み込みサーバーだと、
localhost:8765/
でアクセスできます。こっちだと、サーバーにアップする際に、
URL周りの余計な修正をする手間が省けるので、便利です。

また、組み込みサーバー+MySQLという併用もできます。

参考リンク
開発サーバー