XDebug + VSCode でローカルホストサーバーの PHP 実行をデバッグ
PHP をインストール
1. Apache で PHP を利用するためにはスレッドセーフ版が必要。ダウンロードして適当なディレクトリーに入れ、パスを環境変数に追加
2. PHP ルート直下に php.ini を作成する
3. php.ini の次の行のコメントアウトを解除する
code:ini
extension_dir = "ext"
extension=curl
extension=intl
extension=mbstring
extension=mysqli
extension=odbc
extension=openssl
extension=pdo_mysql
extension=pdo_odbc
extension=pdo_sqlite`
Apache をインストール
2. 管理者権限でコマンドプロンプトを起動し、C:\Apache24\bin に移動
3. ポート番号を変えたい場合は C:\Apache24\conf\httpd.conf を編集し、リッスンポートを変え、ServerName をアンコメントして ServerName localhost:20000 のようにする
4. PHP を利用するため、httpd.conf に LoadModule php7_module "${phpPath}\php7apache2_4.dll" を追加する
1. PHP 8 の場合は php_module
5. PHP を利用するため、AddHandler application/x-httpd-php .php も httpd.conf に追加する
6. php.ini をカスタマイズするために httpd.conf に PHPIniDir "${phpPath}" を追加する
7. httpd.exe -f C:\Apache24\conf\httpd.conf -k start を実行する
8. localhost:20000 (ポート変えてない場合は localhost:8080) にブラウザーからアクセスして It works! が表示されれば👌
Laravel をサブディレクトリーに配置する場合
code:conf
Alias /foo "C:/Apache24/htdocs/foo/public"
<Directory "C:/Apache24/htdocs/foo/public">
AllowOverride All
Require all granted
</Directory>
XDebug をインストール
1. XDebug の dll ファイルをダウンロードし、PHP の拡張フォルダーに追加 (D:\app\php-7.2.12\ext\php_xdebug-2.6.1-7.2-vc15-x86_64.dll など)。
2. php.ini に次のような設定を追加
code:ini
zend_extension=${phpPath}\php_xdebug-2.6.1-7.2-vc15-x86_64.dll
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000 ;XDebug 用のポート番号は以降の設定でも統一取れてればなんでも良い
xdebug.remote_enable=1
xdebug.remote_autostart=1
3. Apache を再起動する (C:\Apache24\bin\httpd -f C:\Apache24\conf\httpd.conf -k restart など)
VSCode の Extensions を追加
PHP Intellisense
PHP Debug
VSCode の Settings を編集
1. File -> Preferences -> Settings を押して php で検索
2. User Settings に次のような設定を追加
code:json
// Points to the PHP executable.
"php.validate.executablePath": "D:\\app\\php-7.2.12\\php.exe",
// The path to a PHP 7+ executable.
"php.executablePath": "D:\\app\\php-7.2.12\\php.exe"
Workspace を作る
File -> Add Folder to Workspace からローカル Apache サーバーの htdocs フォルダーを指定します (C:\Apache24\htdocs など)。この辺は VSCode のワークスペースの考え方に合わせて適当にやってください。
VSCode の Debug 設定を作る
1. Ctrl+Shift+D で Debug パネルを表示し、上の歯車アイコンを押す (launch.json が作られる)
2. 次のような内容に書き換える (Listen for XDebug が XDebug 用の設定。Launch currently open script は表示してるファイル単体をデバッグ実行するときの設定)
code:json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/${contextPath}": "${workspaceRoot}"
}
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"pathMappings": {
"/${contextPath}": "${workspaceRoot}"
}
"port": 9000,
"runtimeExecutable": "D:\\app\\php-7.2.12\\php.exe"
}
]
}
3. 再生ボタンを押してデバッグを開始する
あとは適当にブレークポイント張ったりして、ブラウザーから localhost:20000/foo.php とか適当なファイルにアクセスすれば止まることを確認できます。