たぶんそうそう引っかかることはないのでしょうが、こういうケースもあると思うのでメモ書きに。
ChocolateyでインストールしたPHP(Version 7.2.7)にXDebugをインストールしようとしたら、入らなかった話です。
2018/07/13追記:解決しました
Chocolateyでインストールすると、初期状態で非スレッドセーフ版がインストールされてしまう というのが原因でした。
なので、ChocolateyでPHPをインストールするときは、以下のコマンドを使うようにします。
> choco install --params '"/ThreadSafe "' php
これで、「試した手順」の通りの手順でデバッグ実行ができるようになります。
もうすでに非スレッドセーフ版をChocolatyでインストールしていた場合、`choco uninstall phpだけではアンインストールできない場合がありますので、その場合は以下の通りにして既にインストールしたPHPを削除します。
> choco uninstall -y php -n
コマンド実行後、エクスプローラーからC:\tools\php72をフォルダごと削除します
試した手順(うごかないほう)
- https://xdebug.org/download.php よりXDebugをダウンロード。2018/07/13現在2.7.0alpha1
-
C:\tools\php72\ext
にダウンロードしたファイルを配置し、Ctrl+右クリックよりフルパスをコピーしておく -
C:\tools\php72\php.ini
を開き、一番下の行に以下を追加
[XDebug]
zend_extension = "(さっきコピーしたフルパス)"
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "(適当なフォルダパス)"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = 9000
xdebug.auto_trace = 1
xdebug.trace_output_dir = "(適当なフォルダパス)"
xdebug.idekey = "phpstorm"
ここまででインストールは完了のハズですが、php -v
コマンドを実行するとfailed loading
と表示される。
原因
不明。おそらくPHPのバージョン7.2.7か、64bit版が動かなかったものと思われます(XDebugのバージョンを変えてもダメでした)。
やり直した結果(大丈夫だった方)
早い話、XAMPPで入れた方は大丈夫でした(自分がインストールしていたバージョンでは、コントロールパネルバージョン3.2.2/PHPバージョン7.2.4 32bit版)
- https://www.apachefriends.org/jp/index.html より、XAMPPをダウンロード
-
c:\xampp\php\ext
にXDebugの32bit版DLLをダウンロードしてコピーする(上記リンクからダウンロードできるXAMPP内のPHPが32bit版のため) -
c:\xampp\php\php.ini
に上記の通りのコードを追加 - XAMPPのコントロールパネルでApacheを起動
デバッグ方法は、https://qiita.com/dz_/items/fb574782f4b4b30149a8 などを参考に(わたしの環境ではserverSourceRootとlocalSourceRootは不要でした)。
そして、PHPコードにブレークポイントを設置したあと、VSCode側で「デバッグを開始」、ブラウザ側でページを読み込もうとすると…。
ほら動いた。
XAMPPはC:\xampp\htdocs\配下にファイルを置くようになっているので、「ファイルの移動がめんどくさい!」という方は、リンク作成シェル拡張などを使ってシンボリックリンクなどを作ってしまうといいのではないでしょうか。
結論
どうしても構成が間違ってないハズなのにXDebugが読み込まれない・failed loading
が出る ということであれば、PHPのバージョンを疑ってみるといいでしょう。
XAMPPが入っていると、通常どおりにインストールしたPHPとは別のPHPが動作することになるので、そちらを試すのもよいと思います。
検証用にわざと古いXAMPPをとっておくのもよいかもしれません。