xdebug can be installed via apk, but it takes some tweaking
Determine your PHP extension and config directories
- Copy the output of
php -i
to your clipboard.
- Go to the xdebug Installation Wizard and paste the results in the box.
- Keep this output handy, as we'll need it later. We are mainly concerned with Extra Configuration Files Path and Extensions directory.
Sample xdebug installation wizard output
Figure out where the apk package is being installed
Your results may vary depending on the version you select.
You can find available versions by reviewing the xdebug documentation. As of this writing, only the major PHP releases are listed, but I was able to manually specify a feature release. Just don't include the dot (e.g., 81
NOT 8.1
).
Run apk info -a php<your-php-version>-pecl-xdebug
to get the contents of the package.
According to the output of apk info -a php81-pecl-xdebug
, my locations were:
php81-pecl-xdebug-3.1.5-r0 contains:
etc/php81/conf.d/50_xdebug.ini
usr/lib/php81/modules/xdebug.so
Create your xdebug configuration
I like to keep my xdebug.ini inside my VS Code .devcontainer folder, so that's the route I'll follow for this example. You can also create the configuration file directly in its destination.
If you take the latter path, name the file 99-xdebug.ini
per the documentation.
In either case, all you really need is this line to enable xdebug.
zend_extension=xdebug
Additional options are needed to make it do anything useful, but I'll leave that to the reader.
Create your Dockerfile
In your dockerfile, install the package and link/copy the files according to the previous steps. For example:
ADD <local_xdebug.ini_path> <PHP Extra Configuration Files Path>99-xdebug.ini
RUN apk update && apk add php<version>-pecl-xdebug && \
ln -s /<apk_xdebug.so_path> \
<PHP Extensions directory>
In my case:
ADD ./xdebug.ini /usr/local/etc/php/conf.d/99-xdebug.ini
RUN apk update && apk add php81-pecl-xdebug && \
ln -s /usr/lib/php81/modules/xdebug.so \
/usr/local/lib/php/extensions/no-debug-non-zts-20210902/xdebug.so
Rebuild the container and verify xdebug is enabled
After rebuilding the container, verify that the xdebug module is installed by running php -m
I'm a PHP dummy, so I used the xdebug Installation Wizard as before to verify xdebug was enabled.
Hopefully this saves someone else a couple frustrating hours.
xdebug installed