Attention
You can now run different PHP versions per project: Release v3.0.0-beta-0.1
3.2.4.4. Docker Toolbox: Xdebug for Visual Studio Code¶
Docker Toolbox regardless of running on MacOS or Windows requires an additional port-forward from your host operating system to the Docker Toolbox machine.
Table of Contents
3.2.4.4.1. Prerequisites¶
3.2.4.4.1.1. General¶
Ensure you know how to customize php.ini
values for the Devilbox and have a rough understanding
about common Xdebug options.
See also
3.2.4.4.1.2. Docker Toolbox port-forward¶
Forward host port 9000 to Docker Toolbox machine:
Your IDE/editor will open up port
9000
on your host operating system. PHP Xdebug requires this port to connect to in order to send Xdebug events. As Docker Toolbox itself runs in a virtual machine, you need to forward traffic from the same port in that virtual machine back to your host operating system.
3.2.4.4.2. Assumption¶
For the sake of this example, we will assume the following settings and file system paths:
Directory | Path |
---|---|
Devilbox git directory | /home/cytopia/repo/devilbox |
HOST_PATH_HTTPD_DATADIR | ./data/www |
Resulting local project path | /home/cytopia/repo/devilbox/data/www |
Selected PHP version | 5.6 |
The Resulting local project path is the path where all projects are stored locally on your
host operating system. No matter what this path is, the equivalent remote path (inside the Docker
container) is always /shared/httpd
.
Important
Remember this, when it comes to path mapping in your IDE/editor configuration.
3.2.4.4.3. Configuration¶
3.2.4.4.3.1. Install vscode-php-debug for VSCode¶
Ensure you have vscode-php-debug
installed for Visual Studio Code.
See also
3.2.4.4.3.2. Configure VSCode¶
You will need to configure the path mapping in launch.json
(VSCode configuration file):
{ "version": "0.2.0", "configurations": [ { "name": "Xdebug for Project mytest", "type": "php", "request": "launch", "port": 9000, "pathMappings": { "/shared/httpd/mytest/htdocs": "${workspaceFolder}/htdocs" } }, { "name": "Launch currently open script", "type": "php", "request": "launch", "program": "${file}", "cwd": "${fileDirname}", "port": 9000 } ] }Important
Recall the path settings from the Assumption section and adjust if your configuration differs!
Important
The above example configures Xdebug for a single project mytest. Add more projects as you need.
3.2.4.4.3.3. Configure php.ini¶
Note
The following example show how to configure PHP Xdebug for PHP 5.6:
Create an xdebug.ini
file (must end by .ini
):
# Navigate to the Devilbox git directory host> cd path/to/devilbox # Navigate to PHP 5.6 ini configuration directory host> cd cfg/php-ini-5.6/ # Create and open debug.ini file host> vi xdebug.ini
Copy/paste all of the following lines into the above created xdebug.ini
file:
; Defaults xdebug.default_enable=1 xdebug.remote_enable=1 xdebug.remote_port=9000 ; The Docker Toolbox way xdebug.remote_connect_back=0 xdebug.remote_host=docker.for.lin.host.internal ; idekey value is specific to Visual Studio Code xdebug.idekey=VSCODE ; Optional: Set to true to always auto-start xdebug xdebug.remote_autostart=false
Important
Ensure the port-forward is in place as mentioned in the Prerequisites section.
Note
Host os and editor specific settings are highlighted in yellow and are worth googling to get a better understanding of the tools you use and to be more efficient at troubleshooting.
3.2.4.4.3.4. Restart the Devilbox¶
Restarting the Devilbox is important in order for it to read the new PHP settings. Note that the following example only starts up PHP, HTTPD and Bind.
# Navigate to the Devilbox git directory
host> cd path/to/devilbox
# Stop, remove stopped container and start
host> docker-compose stop
host> docker-compose rm
host> docker-compose up php httpd bind
See also
Stop and Restart (Why do docker-compose rm
?)