XAMPP同梱のPHPにXdebugを追加して、VSCodeでステップ実行できる環境を作る手順

M1 Mac、XAMPPのPHPという環境でXdebugをインストールをして、PHPをステップ実行できるようになりました。私が成功した方法の備忘録ですので、真似するかは自己責任で判断してください。

XAMPPのPHPにPATHを通す

まず、XAMPPのPHPをターミナルで呼び出せるようにします。

echo 'export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

確認:php --version

これでXAMPPのPHPのバージョンが表示されればOK。

2. Xdebugのインストール

XAMPP同梱のPHPでpeclコマンドを使います(sudoをつけて管理者権限で実行)

sudo pecl install xdebug

autoconfをインストールする

autoconf がないと下記のエラーになります。

Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

ERROR: `phpize' failed

autoconfをHomebrew経由でインストールします:brew install autoconf

autoconfが正しくインストールされたか確認:autoconf --version

問題なければ再度sudo pecl install xdebugを実行して完了です。

3. php.iniの編集

php.iniはApplications/XAMPP/xamppfiles/etcフォルダにあります

1700行くらいあってビビりますが、最終行に以下をコピペして保存し、XAMPPのApacheを再起動して完了です。

[xdebug]
zend_extension="xdebug.so"
xdebug.mode=debug
xdebug.start_with_request=yes

4. VSCode側の設定

  1. 拡張機能PHP Debug をインストール
  2. 適当なPHPを書いてブレークポイントを設定してRun>Start Debugging (F5)を押すとPHPのパスがないと言われる。
  3. settings.jsonを開き"php.debug.executablePath": "/Applications/XAMPP/xamppfiles/bin/php"を追加(また最終行でOK)
  4. 再度Run>Start Debugging (F5)を押すとステップ実行できて、変数やスタックを確認できます。

ちなみにこれはWikipediaの「今日は何の日」を取得してみる実験コードをAIで書いたものです。ステップ実行できないとAIのコードが正しいか検証できなくて困るんですよね。

<?php

$date = date('n月j日'); // 今日の日付
$url = "https://ja.wikipedia.org/wiki/{$date}";

$html = @file_get_contents($url);
if ($html === false) {
    die("ページを取得できませんでした。");
}

$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html);
libxml_clear_errors();

$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//*[@id="mw-content-text"]/div[1]/ul[1]/li');

$events = [];
foreach ($nodes as $li) {
    $events[] = trim($li->textContent);
}

echo "<h1>今日は何の日:{$date}の出来事</h1>";
echo "<ul>";
foreach ($events as $event) {
    echo "<li>" . htmlspecialchars($event, ENT_QUOTES, 'UTF-8') . "</li>";
}
echo "</ul>";

実行結果

確認コマンド

現在どのPHPを使っているか確認:which php

Xdebugのロード確認:php -i | grep xdebug

-環境構築
-,