My開発メモ

XdebugをUbuntuにインストールする(Ubuntu24.04)

要するに、xdebugのソースコードを入手し、それをコンパイルするというやり方でインストールした。

ただ、手順として参考にしたのは、https://xdebug.org/wizard/ である。

準備作業

   <?php  phpinfo();

という内容のファイル “phpinfo.php” を ~/public_html/ に作成し、

http://localhost/~(username)/phpinfo.php

として、phpinfo() の情報をブラウザに表示させ、その表示内容をすべてコピーする。

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

コピーした内容を、貼り付ける。

“Analyse my phpinto() output” と書かれたボタンをクリックする。
すると、”Instructions” と書かれたページが開く。

instructions の手順どおりに作業をすすめる。

インストール手順

(1) xdebug-3.4.2.tgz をダウンロードする。

(2) 事前に以下のアプリがインストールされていること。

   $ apt-get install php-dev autoconf automake

(3) xdebugのソースコードを展開する。

   $ tar -xzvf xdebug-3.4.2.tgz
   $ cd xdebug-3.4.2
   $ phpize

(4) phpizeを実行すると、以下のように表示されるはずである。

  Configuring for:
  ...
  Zend Module Api No:     20230831
  Zend Extension Api No:  420230831  

もし、違っていたら phpizeが違っている。
https://xdebug.org/docs/faq#custom-phpize
を参照すること。
また、以下の手順は実行できない。

(5) コンパイル

   $ ./configure
   $ make
   $ cp modules/xdebug.so /usr/lib/php/20230831/

(6) “/etc/php/8.3/cli/conf.d/99-xdebug.ini を作成し、以下の内容とせよ”という指示である。

   zend_extension = xdebug

しかし、ubuntu-24.04の場合、以下のようになっている。

   /etc/php/8.3/
        +-- mods-available/
        |     +-- bz2.ini
        |     +-- calendar.ini
        |             ...
        +-- apache2/
        |     +-- conf.d/
        |            +-- 20-bz2.ini --> ../../mods-available/bz2.ini
        |            +-- 20-calendar.ini --> ../../mods-available/calendar.ini
        |                 ...
        +-- cli/
        |     +-- conf.d/
        |            +-- 20-bz2.ini --> ../../mods-available/bz2.ini
        |            +-- 20-calendar.ini --> ../../mods-available/calendar.ini
        |                 ...

つまり、設定ファイル(*.ini) は mods-availableディレクトリに置いて、
apache2やcliディレクトリにはシンボリックリンクを置いているのである。

このリンクは手作業で作成してもいいが、phpenmod というコマンドを使うと
自動でリンクを作成してくれる。

そこで、/etc/php/8.3/mods-available に xdebug-ini を作成する。

   $ cd etc/php/8.3/mods-available
   $ sudo touch xdebug.ini
   $ sudo vi xdebug.ini
xdebug.ini
   zend_extension = xdebug

(7) シンボリックリンクの作成

   $ sudo phpenmod xdebug

このコマンドにより、
/etc/php/8.3/cli/conf.d/ と
/etc/php/8.3/apache2/conf.d/ に
20-xdebug.ini というシンボリックリンクが作成される。

xdebugのドキュメントには 99-xdebug.ini というファイル名が指定されていたので、
リンク名を変更した。

   $ cd /etc/php/8.3/cli/conf.d
   $ sudo mv 20-xdebug.ini 99-xdebug.ini
   $ cd /etc/php/8.3/apache2/conf.d
   $ sudo mv 20-xdebug.ini 99-xdebug.ini

(8) xdebug.ini の記述内容

xdebug.ini に何を書くか、まだよくわかっていないが、
とりあえず、以下の内容とした。

/etc/php/8.3/mods-available/xdebut.ini
   zend_extension = xdebug
   ; ステップデバッグを有効化
   xdebug.mode = develop, debug
   ; PHPの実行時にデバッグを自動的に開始する
   xdebug.start_with_request = yes
   ; 接続先ホスト
   xdebug.client_host = localhost
   ; 接続先ポート
   xdebug.client_port = 9003

接続先ホストと接続先ポートについては、上の設定はデフォルトで設定されるようである。
書かずにapache2を再起動させ、そのあと、xdebug_info(); を実行したら、上のようになっていた。

xdebuginfo.php
   <?php
   xdebug_info();

(9) apache2を再起動

   $ sudo systemctl restart apache2

参考

Xdebug徹底解説!環境ごとの設定方法から仕組みまでどこよりも詳しく解説します

カテゴリー: memo, php, Ubuntu

タグ: phpenmod, phpize, Xdebug

カウント: 38