記事更新
本記事を書いた後、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でインストールしたアプリケーションのアンインストール
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なっているのかを確認してみましょう。
はい、ちゃんとXdebug2が適応されていました!
確認
PhpStorm側でブレークポイントを貼って止まるのかをチェックしてみましょう。
自分は今回の対応、Xdebu3 => Xdebug2に落として(妥協して)ブレークポイントで止まることが確認できました!
※PhpStorm側の設定は以下記事で紹介してます。
ここで強調しておきたいのが、あくまで今回は妥協策となっており、よくよくはXdebug3で動作させたいと思っております。
以上となります!
参考
■wgetでXdebugを追加
■Xdebug3の設定について