PhpStorm ブレークポイント止まらない Xdebug3での設定を諦めXdebug2にバージョン下げて動かした件

PHP
スポンサーリンク

記事更新

本記事を書いた後、Xdebug3の設定に成功しました。(2021/03/02現在)
本記事はXdebug3の設定に失敗していた当時の記事となります。

・Xdebug3の設定記事

以降の内容も状況に合わせて参考にしてください。

まえおき

久しぶりにVagrantで環境構築してyumでxdebugをインストール。

$ yum -y install --enablerepo=remi-php72 php-xdebug

xdebugが3になっていました。
つい最近、xdebug3がリリースされたらしい ※2021年1月現在

どうやらxdebug3とxdebug2では設定値が変更されているとのこと(設定についての詳細は割愛します)

Xdebug2の時に使い回しで使用していた設定値をそのままxdebug3のiniにコピペしてもブレークモードで止まってくれませんでした。

なんとか新しくなったxdebug3の設定値で動かそうとしても、うまくブレークポイントが作動してくれなかったので妥協してxdebug2に戻してうまく動作しました!
というお話です。
※ 妥協案 + 正当法ではないと思うので自己責任で参考にしてください。

環境

CentOS 7
Apache 2.4
PHP 7.2
Xdebug 3 => Xdebug 2にします

Xdebug3 アンインストール

「yum remove」でXdebugをアンインストールします。

$ yum -y remove php-xdebug

yumを通してるので、依存しているパッケージもアンイストールされますが、iniファイルは削除されなかったので手動で削除しました。

$ rm -rf /etc/php.d/15-xdebug.ini

場合によってはphp.iniに直接記載している場合もあると思いますが、必要に応じてコメントアウトしておくと良いでしょう。

Xdebug2 インストール

まえおき

Peclとwgetでのインストール方法を紹介指定ます。
Peclでインストールできればwgetのインストール方法はスキップしてください。

※ Peclで過去バージョンをインストールする方法を見つけたので記事を更新しました。
※補足としてwgetのインストール方法も残してます。
(2021/03/02記事更新)

Peclでインストール

Xdebug-2.9.5をインストールします。

$ pecl install xdebug-2.9.5

備考

Peclコマンドが実行できない場合、以下を導入すればコマンドが実行できるようになるはずです。

$ yum install php-devel
$ yum install php-pear

・Peclについて参考リンク

パッケージ管理システム(パッケージマネージャ)の種類 (Windows, Linux, Mac)
最近、ソフトウェアをインストールする際にやたらとパッケージマネージャーを使います。システムによって、あるいはアプリケーションによってパッケージマネージャーが異なるので、今回、整理してみました。パッケージ管理システム (パッケージマネージャ)

・Peclでインストールしたアプリケーションのアンインストール

Mac peclでインストールしたアプリをアンインストールする - Qiita
目的 peclでのアンインストール方法をまとめる 実施方法 下記コマンドを実行するだけである。 $ pecl uninstall アプリ名


wgetでインストール

※ Peclでインストールが成功した場合、本章はスキップしてください。

パッケージ管理 (yumやPecl) で過去バージョンを指定してインストールできるのが理想ですが、インストールできなかった場合の最終手段です。

wgetにて指定バージョンのXdebugのソースを直接落として、インストールしていきます。

パッケージ管理で落としてくる方法と違い、互換性が保証されないこと、依存関係を自分で管理しないといけないことが注意点です。

この辺については以下が参考になります。

【パッケージ管理システムとは?】Linuxでのパッケージ管理の使い方まとめました
パッケージ管理システムとはLinuxで使うソフトウェアを管理するシステムのことだ。このページではLinuxのパッケージ管理についてまとめた。参考にしていただければと思う。

インストール実施

それではインストールを実施していきます。

作業ディレクトリの作成

まずは任意の作業ディレクトリを作成しましょう。その中にXdebugをダウンロードします。
※ 自分はoptフォルダにxdebugフォルダを作成しました。

$ mkdir /opt/xdebug

そのまま作業ディレクトリに移動しましょう。

$ cd /opt/xdebug/
Xdebugソースをダウンロード

今回はxdebug2.9.5をダウンロードしました。

$ wget wget http://xdebug.org/files/xdebug-2.9.5.tgz
Xdebugソースを解凍
$ tar -xvzf xdebug-2.9.5.tgz

解凍してできたディレクトリに移動します。

$ cd /opt/xdebug/xdebug-2.9.5
インストール実行

configureコマンドを実行してMakeFileを生成します。

$ ./configure

makeでインストールを実行します。

$ make

インストールが成功するとmodulesフォルダが生成されていると思うので、移動しておきましょう。

$ cd /opt/xdebug/xdebug-2.9.5/modules

この中にxdebug.soがあるはずです。

ファイルを適切な場所に配置

xdebug.soを配置

php.iniか phpinfoで「extension_dir」を確認します。
自分は「/usr/lib64/php/modules」だったので、ここに「xdebug.so」をコピーします。

cp /opt/xdebug/xdebug-2.9.5/modules/xdebug.so /usr/lib64/php/modules/xdebug.so

xdebug.iniを配置

同じく、php.iniか phpinfoで「Additional .ini files parsed」を確認します。
自分は「/etc/php.d」だったので、ここに「xdebug.ini」をコピーします。

cp /opt/xdebug/xdebug-2.9.5/xdebug.ini /etc/php.d/xdebug.ini

設定ファイルの編集

配置したxdebug.iniを編集します。

vi /etc/php.d/xdebug.ini

iniの最終行に以下を追記します。
※ zend_extensionにはxdebug.soを配置したディレクトリが入ります。

[XDebug]
zend_extension = /usr/lib64/php/modules/xdebug.so
xdebug.dump_undefined = 1
xdebug.remote_enable = 1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart = 1
xdebug.remote_connect_back=1

保存します。

作業を反映させる

Apacheを再起動して設定反映させます。

$ systemctl restart httpd

ここまできたら最終チェック。phpinfoでXdebugが2なっているのかを確認してみましょう。

はい、ちゃんとXdebug2が適応されていました!

確認

PhpStorm側でブレークポイントを貼って止まるのかをチェックしてみましょう。
自分は今回の対応、Xdebu3 => Xdebug2に落として(妥協して)ブレークポイントで止まることが確認できました!
※PhpStorm側の設定は以下記事で紹介してます。

ここで強調しておきたいのが、あくまで今回は妥協策となっており、よくよくはXdebug3で動作させたいと思っております。


以上となります!

参考

■wgetでXdebugを追加

■Xdebug3の設定について

Xdebug3.0.0がリリースされたので、ver2からの雑な設定コンバート - Qiita
Xdebug 3.0.0 is out! 11/25にXdebug 3.0.0 is out!されたわけですが、pecl install xdebugと記載していて、まんまと勝手にver3がインストールされてしまい、まんまと以前...
Xdebug を構成する — PhpStorm
Xdebug をダウンロードPHP バージョンと互換性のあるXdebug 拡張をダウンロードし、インストールガイドの説明に従ってインストールします。Xdebug 3は、パフォーマンスの向上、構成の簡素化、PHP8 のサポートをもたらします。Xdebug 3 へのアップグレードの詳細については、アップグレードガイドを参照...
タイトルとURLをコピーしました