Xdebugの設置でつまづいたため、とりあえず最小限で試してみる。
(別Ver. Debian 10 (buster) PHP7.1 Xdebug2.9 - demandosigno)
Xdebug: Documentation » Supported Versions and Compatibility
docker-compose.yml
version: '3' services: php: image: php:8.2-apache volumes: - ./html:/var/www/html ports: - 8002:80 container_name: php8.2
docker-compose up -d
# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" # php -v PHP 8.2.13 (cli) (built: Dec 19 2023 14:12:13) (NTS) # apt update && apt upgrade # service apache2 status apache2 is running. # apt install vim # vim phpinfo.php # apt install php-xdebug Package php-xdebug is a virtual package provided by: php8.2-xdebug 3.2.0+3.1.6+2.9.8+2.8.1+2.5.5-3 [Not candidate version] E: Package 'php-xdebug' has no installation candidate
パッケージからはダメでした。PECLで。
# pecl install xdebug downloading xdebug-3.3.1.tgz ... Starting to download xdebug-3.3.1.tgz (258,953 bytes) Build process completed successfully Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20220829/xdebug.so' install ok: channel://pecl.php.net/xdebug-3.3.1 configuration option "php_ini" is not set to php.ini location You should add "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20220829/xdebug.so" to php.ini
Xdebug: Documentation » Installation
"Warning: You should ignore any prompts to add "extension=xdebug.so" to php.ini — this will cause problems."
『警告: php.iniに "extension=xdebug.so "を追加するよう促されても無視すべきです。』
PHPの設定
1. コマンドラインで php --ini を実行し、変更すべきPHPのiniファイルを見つける。
# php --ini Configuration File (php.ini) Path: /usr/local/etc/php Loaded Configuration File: (none) Scan for additional .ini files in: /usr/local/etc/php/conf.d Additional .ini files parsed: /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
もし、/etc/php/7.4/cli/conf.d/99-xdebug.ini のように xdebug を名前に含むファイルがあれば、このファイルを使用します。
このファイルが存在せず、conf.dや同様のディレクトリに他のファイルがある場合は、そこにも新しいファイルを作成できます。その場合、99-xdebug.iniと命名してください。
そうでない場合は、スクリプトまたはphp --iniコマンドで表示されるphp.iniファイルを修正してください。
php.iniファイルは1つだけではありません。多くのセットアップでは、コマンドライン用(多くの場合cli/php.ini)とウェブサーバー用(多くの場合fpm/php.ini)があります。
2. Add the following line to this PHP ini file:
zend_extension=xdebug
# cd /usr/local/etc/php/conf.d/ # vi 99-xdebug.ini zend_extension=xdebug [xdebug] ;xdebug.client_host = host.docker.internal // 自分の環境ではこれを記載するとVSCodeを立ち上げた時点でアプリに繋がらなくなった。この辺りの設定詳細がまだ理解できていません。 xdebug.mode=debug xdebug.start_with_request = yes xdebug.discover_client_host = 1 xdebug.client_port=9003
3. Restart your webserver, or PHP-FPM, depending on what you are using.
# php -v PHP 8.2.13 (cli) (built: Dec 19 2023 14:12:13) (NTS) with Xdebug v3.3.1, Copyright (c) 2002-2023, by Derick Rethans
VSCode側の設定
VSCodeを立ち上げコンテナに繋ぐ。
VSCodeでLocalにインストールした拡張機能PHPdebugをクリックしてコンテナの方にもインストールする。
launch.jsonファイルを作成
{ "version": "0.2.0", "configurations": [ { "name": "Listen for Xdebug", "type": "php", "request": "launch", "port": 9003, "pathMappings": { "${workspaceRoot}/html": "${workspaceRoot}/html" } } ] }
デバッグ実行してからブラウザを開き、ブレークポイントで止まるか確認。問題なさそう。 Xdebug: Documentation » Xdebug 2 から 3 へのアップグレード