0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Eclipse(PHP)「デバッグ・モードで開始できませんでした」→デバッガー(Xdebug)をダウンロードして解決!

Last updated at Posted at 2025-02-07

1.何が起きたか

EclipseでPHPファイルをデバッグモードで実行しようとしたところ、下記エラーが出て実行できませんでした。
「起動エラー:起動構成'sample(ファイル名)'がデバッグ・モードで開始できませんでした。'Default PHP Web Server'サーバー構成に対応するデバッガーが指定されていません。」
2025-02-07_14h20_02.png

【環境】

  • Eclipse
    Pleiades All in One>Eclipse2024>PHP Windows x64 Full Edition(Version: 2024-12 (4.34))
    Apacheのポート番号は80(下記スクショ参照)
    2025-02-07_15h30_23.png

2.解決方法

2-a.結論

Xdebugを使った。

・Xdebug(デバッガー)のHPからdllファイルをダウンロードし、
・dllファイル名を「php_xdebug.dll」に変更し、
・「php_xdebug.dll」を「\xampp\php\ext」に移動し、
・Eclipseで
 -デバッガーを「Xdebug」とし
 -デバッガーのポート番号を(9000から)「9003」に変更し(3か所)
 -リモートセッション受信(JIT)を(localhostから)「プロンプト」に変更し
・Ecliplseを閉じ、ApacheとMySQLをStopし、
・ApacheとMySQLをStartし、Eclipseを立ち上げると・・・
デバッグできるようになった!!

以下に詳細を記録しました。

2-b.解決方法に出会うまで

「Eclipse PHP デバッグできない」等でググるも意外とヒットする記事が少なかった。あっても4年前(2020年)以前の記事で情報が古かった。

なのでXで検索した。

2024年11月3日(2025年2月現在の3か月前!)のこちらのつぶやきを発見。

リンク先の下記ブログ記事(つぶやき元の67th Starさんが書かれたもの)をメインで参照させていただきました。ありがたい…。
eclipseでXdebugを有効にする、ブレークポイントに止まらない症状も修正」(67th Star)

2-c.解決方法

1. https://xdebug.org/wizard
にアクセス。

2. アクセス先の枠(下スクショ)にphpinfo情報を貼り付け、「Analyse my phpinfo() output」を押下。
image.png

※phpinfo情報の確認方法

「Pleiades All in One」を設定済みならapacheを起動して下のURLよりphpinfoを確認できる。
(引用元:「eclipseでXdebugを有効にする、ブレークポイントに止まらない症状も修正」67th Star)

http://localhost/dashboard/phpinfo.php にアクセスすると下記が表示される。
2025-02-07_15h51_37.png

スクショ部分の下部にも
「HTTP Headers Information、bcmath、bz2、calendar、Core、(中略)、PHP Credits、PHP License」
と項目が続いており、どの部分をコピペしたらよいのか迷ったが、「Ctrl+A」で全選択してコピペした。

2025-02-07_15h58_44.png

3. dllファイルをダウンロード
表示されたリンク(下記赤枠)を押下。
2025-02-07_16h02.png
(Chromeからダウンロードしたら、Chromeにダウンロードをブロックされた。Chromeで表示された「未確認のファイルをダウンロード」を押下してダウンロードを強制実行した。)

4. dllファイル名を変更
ダウンロードされたファイル名は「php_xdebug-3.4.1-8.2-ts-vs16-x86_64.dll」だった。
これを「php_xdebug.dll」に変更。

5. 「php_xdebug.dll」を「\xampp\php\ext」に移動
ファイル「php_xdebug.dll」を
フォルダ「(省略)\pleiades\(省略)\xampp\php\ext」に移動

6. Eclipseの設定
Eclipseの上部「実行」>「デバッグ構成」でデバッグ構成タブを開く
→「デバッガー」タブ>「構成」でサーバーの編集タブを開く
→「デバッガー」のプルダウンから「Xdebug」を選択
→ポート番号がデフォルトは9000になっているので、「9003」に変更→「完了」

※ポート番号を9003に変更する理由・・・

Xdebugの標準のデバッギングポートは 9000 から 9003 へ変更されました。
(引用元:Xdebugウェブサイト「Xdebug 2 から 3 へのアップグレード」)

※この時点でphp.iniの内容を確認すると・・・
最下行に下スクショの文言が自動追加されていた。
image.png

※67th Starさんのブログ記事で紹介されていた方法はここまで。67th Starさんはここまでの方法で、デバッグが正常作動するようになったとのこと。
→しかし、私はこの方法だけでは正常作動しなかった。(デバッグ時にブレークポイントで止まらない現象が起きた。(下記「3.結果」の[3. 問題発生]参照))
→この方法に加えて下記「3.結果」の [4. Eclipseの設定を修正]と[6. ApacheとMySQLを再起動]を実行したら、正常作動するようになった。

3. 結果

1. パースペクティブ設定
Eclipseの上部「ウィンドウ」>パースペクティブ>パースペクティブを開く>デバッグ

2. デバッグ実行
デバッグ実行したいphpファイルを右クリック>デバッグ>3 PHP Webアプリケーション

3. 問題発生
デバックは無事実行できたけど、ブレークポイントで止まらない(変数タブに何も表示されない&停止ボタンは赤色に色づいているけど、ステップオーバーとステップインのボタンは色づいておらず押せない)
2025-02-07_17h26_00.png

4. Eclipseの設定を修正
①Eclipseの上部「ウィンドウ」>設定>PHP>インストール済みのPHP
image.png
「PHP8(以下略)」を選択>編集>デバッガー>ポート番号を確認
image.png
9000になってる!!→9003に変更>OK>適用して閉じる

②Eclipseの上部「ウィンドウ」>設定>PHP>デバッグ>デバッガーを選択→Xdebugを選択→構成
→デバック・ポートを9000から「9003」に変更。
→リモートセッション受信(JIT)が「localhost」になっているので「プロンプト」に変更。
2025-02-07_17h08_45.png
→OK>適用して閉じる

5. デバッグ実行に再挑戦!
デバッグ実行したいphpファイルを右クリック>デバッグ>3 PHP Webアプリケーション

やっぱりできない。

6. ApacheとMySQLを再起動
仮説:Apacheを再起動して書き換えられたphp.ini等をリロードする必要があるのではないか??
検証:Ecliplseを閉じ、XMAPP Control PanelでApacheとMySQLをStop。
(MySQLの再起動は不要かとも思ったが、ついでに再起動してみた。再起動した後で、検証なのだからまずはApacheだけを再起動すれば良かったなと反省。次回同じケースがあったらその際はApacheだけ再起動してみよう。)
→XMAPP Control PanelでApacheとMySQLをStart。Eclipseを起動。

7. デバッグ実行に再再挑戦!
デバッグ実行したいphpファイルを右クリック>デバッグ>3 PHP Webアプリケーション

PHPデバッグ(下スクショ)が表示される。→「はい」
image.png


できたーーーーー!!!!
debug.png

4.最終結果

・Xdebug(デバッガー)のHPからdllファイルをダウンロードし、
・dllファイル名を「php_xdebug.dll」に変更し、
・「php_xdebug.dll」を「\xampp\php\ext」に移動し、
・Eclipseで
 -デバッガーを「Xdebug」とし
 -デバッガーのポート番号を(9000から)「9003」に変更し(3か所)
 -リモートセッション受信(JIT)を(localhostから)「プロンプト」に変更し
・Ecliplseを閉じ、ApacheとMySQLをStopし、
・ApacheとMySQLをStartし、Eclipseを立ち上げると・・・
デバッグできるようになった!!

疑問&回答

Q1)dllファイルって何?

Dynamic Link Library。
Windowsで使われる「動的リンクライブラリ」。
プログラムが必要な機能を呼び出せるようにするファイルで、例えばphp_xdebug.dllならXdebugのデバッグ機能を提供する。
PHP本体とは別のファイルになっているから、必要なときだけロード(読み込む)して使えるのが特徴。

Q2)リモートセッション受信(JIT)を(localhostから)「プロンプト」に変更したけど、これは何をしてるの?

「JIT(Just-In-Time)デバッグ」は、スクリプトがエラーを起こしたときにデバッガーを起動する仕組み。

localhost(デフォルト)
→ Xdebugは「localhost(127.0.0.1)」のデバッガー(例えばEclipse)に自動的に接続しようとする。

プロンプト
→ Xdebugがデバッグを開始するときに「どのデバッガーに接続するか?」を聞いてくる。

つまり、デバッグのタイミングで接続先を選べるようになったということ。例えば、複数のデバッガー(Eclipse以外のツール)を使う場合にも便利。
(・・・いまいちよくわからない!!)

Q3)最後にApacheとMySQLとEclipseを再起動する必要性

dllファイルの変更をApache(PHPの実行環境)に反映させるには再起動が必要。

理由:
php_xdebug.dllは、PHPが起動したときに一度だけ読み込まれる(ApacheがPHPをロードするとき)。だから、Apacheを再起動しないと新しいXdebugの設定が適用されない。
EclipseもXdebugとの接続を確立する必要があるから、再起動して正しく設定を読み込ませる。(再起動しないとPHPが古い設定のまま動いてしまう可能性がある。)

再起動の流れ:
① Apacheを停止(PHPが使っていた古いXdebugを解放)
② MySQLもついでに停止(PHPと連携することがあるため)
③ Apacheを再起動(新しいXdebugを読み込む)
④ MySQLも再起動(必要なら)
⑤ Eclipseを再起動(正しくデバッガーの設定を反映)

参考

eclipseでXdebugを有効にする、ブレークポイントに止まらない症状も修正」67th Star

https://mitosuya.net/not-stop-breakpoints-eclipse)

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?