記事更新
本記事を書いた後、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について参考リンク
・Peclでインストールしたアプリケーションのアンインストール
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9TWFjJTIwcGVjbCVFMyU4MSVBNyVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MiVCOSVFMyU4MyU4OCVFMyU4MyVCQyVFMyU4MyVBQiVFMyU4MSU5NyVFMyU4MSU5RiVFMyU4MiVBMiVFMyU4MyU5NyVFMyU4MyVBQSVFMyU4MiU5MiVFMyU4MiVBMiVFMyU4MyVCMyVFMyU4MiVBNCVFMyU4MyVCMyVFMyU4MiVCOSVFMyU4MyU4OCVFMyU4MyVCQyVFMyU4MyVBQiVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MDQyNGUzOGFmZWMyZjE4ZDA5MjA2MWZmMjNlMzJjY2E&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwbWlyaXdvJTIwaW4lMjBCT09NJTIwVEVDSCUyMENBRkUmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zMiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWVjMmM5NTdhYjhjNTFiMWU2Yjk4MTA4NzcyM2JlOWMw&blend-x=142&blend-y=491&blend-mode=normal&s=c10e44f9675dbbf761d4191ed37c80d2)
wgetでインストール
※ Peclでインストールが成功した場合、本章はスキップしてください。
パッケージ管理 (yumやPecl) で過去バージョンを指定してインストールできるのが理想ですが、インストールできなかった場合の最終手段です。
wgetにて指定バージョンのXdebugのソースを直接落として、インストールしていきます。
パッケージ管理で落としてくる方法と違い、互換性が保証されないこと、依存関係を自分で管理しないといけないことが注意点です。
この辺については以下が参考になります。
インストール実施
それではインストールを実施していきます。
作業ディレクトリの作成
まずは任意の作業ディレクトリを作成しましょう。その中に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なっているのかを確認してみましょう。
![](https://techtech-note.com/wp-content/uploads/2021/02/1011-1.png)
はい、ちゃんとXdebug2が適応されていました!
確認
PhpStorm側でブレークポイントを貼って止まるのかをチェックしてみましょう。
自分は今回の対応、Xdebu3 => Xdebug2に落として(妥協して)ブレークポイントで止まることが確認できました!
※PhpStorm側の設定は以下記事で紹介してます。
ここで強調しておきたいのが、あくまで今回は妥協策となっており、よくよくはXdebug3で動作させたいと思っております。
以上となります!
参考
■wgetでXdebugを追加
■Xdebug3の設定について
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9WGRlYnVnMy4wLjAlRTMlODElOEMlRTMlODMlQUElRTMlODMlQUElRTMlODMlQkMlRTMlODIlQjklRTMlODElOTUlRTMlODIlOEMlRTMlODElOUYlRTMlODElQUUlRTMlODElQTclRTMlODAlODF2ZXIyJUUzJTgxJThCJUUzJTgyJTg5JUUzJTgxJUFFJUU5JTlCJTkxJUUzJTgxJUFBJUU4JUE4JUFEJUU1JUFFJTlBJUUzJTgyJUIzJUUzJTgzJUIzJUUzJTgzJTkwJUUzJTgzJUJDJUUzJTgzJTg4JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lOWVmODA1ZmRjOWI0ODNjMjcyYjYwMjIxOTYyYWFiOQ&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbmFveXVraWsmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTkwYjkzMTljZGQ5NDNkZWI1ZjY3ZGIzYmYwZGI3NTlm&blend-x=142&blend-y=491&blend-mode=normal&s=c19822203ceb45dababfc1649d4a371a)
![](https://techtech-note.com/wp-content/uploads/cocoon-resources/blog-card-cache/d57fb91c218aefd716bc7498768bbb91.png)