3.2.4. Configure Xdebug: Docker for Mac

Docker for MacOS requires a well known IP address in order to connect to the host operating system. This can be achieved with two different approaches described below.

Table of Contents

3.2.4.1. Prerequisites

Ensure you know how to customize php.ini values for the Devilbox and Xdebug is enabled.

3.2.4.2. Configure php.ini: CNAME alias

Option 1: This option is the easiest to setup, but was also very fragile on many Docker versions.

Docker for Mac received many default CNAMEs throughout its versions. The most recent and active one is host.docker.internal. Use this CNAME as the remote address for Xdebug to connect to your IDE/editor on your host os.

See also

CNAME for Docker for Mac
In case host.docker.internal is not resolvable, read on here for alternative CNAME’s on Docker for Mac

Important

Before you try this approach, verify that the PHP Docker container is actually able to resolve host.docker.internal:

host> cd path/to/devilbox
host> ./shell.sh
php> ping host.docker.internal

In case it is not resolvable, stick to the host alias address approach.

The following example show how to configure PHP Xdebug for PHP 5.6:

1. Create xdebug.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

2. Paste the following content into xdebug.ini

xdebug.ini
; Defaults
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_port=9000

; The MacOS way (CNAME)
xdebug.remote_connect_back=0
xdebug.remote_host=host.docker.internal

; idekey value is specific to each editor
; Verify IDE/editor documentation
xdebug.idekey=PHPSTORM

; Optional: Set to true to auto-start xdebug
xdebug.remote_autostart=false

3. Configure your IDE/editor

Important

Depending on your IDE/editor, you might have to adjust xdebug.idekey in the above configured xdebug.ini.

4. Restart the Devilbox

Restarting the Devilbox is important in order for it to read the new PHP settings.

3.2.4.3. Configure php.ini: Host alias

Option 2: This is the most general option that should work with any Docker version on MacOS, it does however require a few changes in your system.

Important

Ensure you have created an Host address alias on MacOS and 10.254.254.254 is aliased to your localhost.

The following example show how to configure PHP Xdebug for PHP 5.6:

1. Create xdebug.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

2. Paste the following content into xdebug.ini

xdebug.ini
; Defaults
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_port=9000

; The MacOS way (host alias)
xdebug.remote_connect_back=0
xdebug.remote_host=10.254.254.254

; idekey value is specific to each editor
; Verify with your IDE/editor documentation
xdebug.idekey=PHPSTORM

; Optional: Set to true to auto-start xdebug
xdebug.remote_autostart=false

3. Configure your IDE/editor

Important

Depending on your IDE/editor, you might have to adjust xdebug.idekey in the above configured xdebug.ini.

4. Restart the Devilbox

Restarting the Devilbox is important in order for it to read the new PHP settings.