Xampp+CakePHP4+Eclipse開発環境を作成する(Windows)

CakePHP4での開発環境をローカルに作った時の自分の作業メモです。

#作成環境
OS:Windows 10
Xampp:Windows版7.4.8
CakePHP:4.1.1
Composer 1.10.9
Eclipse 2020-06 (4.16.0)

#Xamppインストール
https://www.apachefriends.org/jp/index.html

特に必要がなければデフォルトのc:\xamppでいいのではないかと。
という訳でそのあとは上記のパスにインストールした前提で記載します。

#php.ini編集
後で「You must enable the intl extension to use CakePHP.」って怒られるので、
先にphpの設定を編集しておきます。

C:\xampp\php\php.ini
extension=intl
を下記に変更 
extension=php_intl.dll 
#ドキュメントルート変更
xamppを使う場合のデフォルトルートは
C:\xampp\htdocs
変更する場合はApacheのhttpd.confを変更する。
画像のL252付近の下記二行をお好みに変更。
DocumentRoot "C:/workspace"
\<Directory "C:/workspace"\>

<img width="698" alt="無題.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176906/275708fd-8238-23c2-79f6-456dbf2add46.png">


#Composerインストール
Composer先生ってJenkins先生と画風が似てますね…
ひとまず普通にインストールすればOKと思われます。
https://getcomposer.org/


#CakePHPプロジェクト作成
コマンドプロンプトでプロジェクトを作成したい場所に移動します。
基本ドキュメントルートで作成するかなと思います。
cd c:\workspace
composer create-project --prefer-dist cakephp/app <アプリケーション名>

作成完了後、
http://localhost/<アプリケーション名>
にアクセスすると下記のページが出ればOKです。
<img width="946" alt="無題.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176906/46f76db9-cdd0-19fe-3421-a5db58779996.png">

#データベース設定
この状態だと、まだMySQLの設定をしていないので
「CakePHP is NOT able to connect to the database.
Connection to Mysql could not be established: SQLSTATE[HY000] [1045] Access denied for user 'my_app'@'localhost' (using password: YES)」
というメッセージが出ているので、これを解消する。
XAMPPコンソールからMySQLのAdminを選択して管理コンソールを開く。
<img width="501" alt="無題.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176906/d755b202-dd71-23f5-1f5e-59dcde61ce61.png">

データベースとユーザーを作成する。
コンソールのGUIからも作成できるけどコマンドで作ったほうが早いかも。
(といいつつコンソールで作った…)

作成したらC:\workspace\belongings-app\config\app-local.phpを編集
<img width="708" alt="無題.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176906/13c2c971-9cf1-81b3-cfc1-303ddd562868.png">

Datasourcesの下階層のusername、password、databaseの内容を編集します。
これでエラーは解消されます。

#Eclipseでのデバッグ設定

Eclipseのインストール及びPHP Development Toolsの導入を行います。
https://www.eclipse.org/downloads/

file>import>Existing Composer Project
で上記で作成したプロジェクトをインポートする。

コンテキストメニューのDebug Asか上のバグアイコンから「Debug Configration」を開く
<img width="496" alt="無題.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176906/2f0bc8d2-2e9a-cc14-2520-07f5967306eb.png">
Name:任意
File:<アプリケーション名>/webroot/index.php

Debuggerタブに切り替えて「Configure」ボタンを押下する。
<img width="428" alt="無題.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176906/0170a79c-5fe9-04aa-f1a4-85fc185c4765.png">
Debugger:Xdebug
Port:お好み

「Finish」押下後、Debuugerタブの設定確認
<img width="494" alt="無題.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176906/688464a9-9ad2-3d02-d19c-d610c906809a.png">
Break at First Line:チェック外しておく(どちらでもよいが…)

ここで「Debug」を押下すると、Eclipseの内部ブラウザで表示される

###外部ブラウザで表示したい場合
Window > Preferences
General>Web Browser
<img width="547" alt="無題.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176906/2db655f4-9519-9182-cf67-52728bf7bfcb.png">
図のようにUser External web browserを選択して、下で好みのブラウザを選択する。

※追記
この状態だとデバッグ実行がうまくできないため下記追加
適当なページでphpinfo()を出力し、内容を下記にコピー
https://xdebug.org/wizard
おすすめされたxdebugを入れておすすめされた設定をphp.iniに追加
私の場合下記を追加
zend_extension = C:\xampp\php\ext\php_xdebug-2.9.6-7.4-vc15-x86_64.dll
xdebug.remote_enable = 1
xdebug.remote_host = "localhost"
xdebug.remote_port="8888"

デバッグ実行時のポートを上記に合わせる。

これでデバッグ実行が可能になる。