Xdebug Support: PHP debugging

Hi all, I want just to share my steps to make this working with PhPStorm and Linux Mint

first, install xdebug

docker exec devkinsta_fpm bash -c 'apt-get update;apt-get -y install php7.0-xdebug php7.1-xdebug php7.2-xdebug php7.3-xdebug php7.4-xdebug php8.0-xdebug'

Then I added these lines on my xdebug.ini

zend_extension=xdebug.so
xdebug.mode=develop,debug
xdebug.client_host=172.19.0.1
xdebug.client_port=9003

and then I restart the container

docker exec -it devkinsta_fpm bash

Thank you all!

2 Likes

I really hope to see XDebug in DevKinsta soon without the manual setup/configuration.

1 Like

I’m trying to figure out how to get this all set up. I’m having no luck. I added the following the xdebug.ini

zend_extension=xdebug.so
xdebug.mode=develop,debug
xdebug.client_host=172.19.0.1
xdebug.client_port=9003
xdebug.start_with_request = yes
xdebug.idekey = PHPSTORM
xdebug.log = /var/log/php/xdebug.log

I can’t get anything to work. Is there a correlating setting I am missing? I have the xdebug extension for chrome installed and running. I found the settings for it and it is looking for the PHPSTORM IDE key. I have PHPStorm listening and I even used the built in validation tool and it all checked out. So I’m not sure why my breakpoints aren’t catching.

Any help is much appreciated. Thank you.

What am I missing here?

Hi @robruiz - did you see the guide I’ve posted here?

I’m not familiar with the dialog in your screenshot. I’ve configured Xdebug via “PhpStorm > Preferences… > PHP > Debug”

Also, I do not use an IDE key, as I enable or disable debugging via the Chrome extension. Generally, the IDE key caused problems for me in the past, so I never use it. I always enable or disable Xdebug in the whole environment instead of using IDE keys/session ids.

Aside from that, I recommend clicking the “Validate” link in your “Pre-configuration” section. Possibly, you will get some additional tips from PhpStorm on what’s failing.

I did not stumble upon this. Thank you so much for pointing it out. I’m gonna run through this and give it a try. Thanks!

Any updates on this? It’s been a year and still nothing.

I got a notice that port 9003 was already in use. I didn’t want to debug it, so I just changed it to 9999 in xdebug.ini and launch.json. And it worked! Awesome! Thanks!

1 Like

@sonicviz guide worked great until I recently updated to the latest DevKinsta and now it no longer works. Breakpoints are entirely ignored. It’s unbelievable that something this basic has not been addressed by the devs after this long. Wordpress is based on PHP and yet debugging PHP is somehow not supported without tons of effort, and it won’t last if you keep the app updated, apparently. Word to the wise if you are finding this page because you’re having the same issues we all did; if you get it to work DO NOT UPDATE DevKinsta until they announce official support for this basic feature.

That’s worrying. Can anyone else confirm this?
I’ll try and test it asap to see as well.

Yeah it’s a real bummer. I went back through and confirmed that the xdebug.ini file is where it should be and configured correctly, nothing changed in my VSCode config, but when I run debug mode the breakpoints are ignored and the only thing I did was update DevKinsta to the latest version after ignoring the update notices for quite some time. I’m totally baffled.

Hi everyone, I just wanted to drop a development update here:

Our devs have been using 2022 to integrate the most requested features into DevKinsta. At our current pace, built-in Xdebug support will be added during Q4 of 2022 along with other development-related features (like GIT integration). You can track our release progress here: https://community.devkinsta.com/t/devkinsta-releases-minor/

I’m unsure of what change may have caused this workaround to no longer work, but I’ll make sure we notify this thread when DevKinsta officially supports Xdebug.

Thanks for the update.

Q4 for xDebug support seems a little shabby tbh, considering debugging is a core developer task.
I would have thought you would give this a higher priority.

Yeah, appreciate the update. Glad to hear you are working on it, but I’m forced to agree that a Q4 rollout for this feature is lacking. It’s critical that we are able to debug, and now the work around no longer works, I’m sort of dead in the water when it comes to anything PHP related.

Hi @sonicviz and @jscotti, I agree that from a PHP development standpoint this is an important feature. I’m assuming when the Roadmap was finalized, basic web design needs were prioritized based on our surveys, interviews and forum engagement. I have notified our developers about this issue and spent a good deal of time figuring out how to get this work. Hopefully this works for everyone:

I based my setup on @sonicviz 's findings and this post. For some reason, using host.docker.internal no longer works and I had to use my ip address. I don’t know if that’s due to a DK change or a Docker one. I also changed the x.debug.idekey to “docker” but I’m not sure if that makes a big difference or not. Another setting I added was xdebug.discover_client_host=true.

Below is my working configuration for Windows 10, WSL2:

/etc/php/7.4.fpm/conf.d

zend_extension=xdebug.so
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9003
xdebug.idekey = "docker"
xdebug.client_host = <my ip address>
xdebug.log = /var/log/php/xdebug.log
xdebug.discover_client_host=true

Finding your IP address:

Mac:

ipconfig getifaddr en0

Windows (run command within WSL):

grep nameserver /etc/resolv.conf | cut -d ' ' -f2

Linux:

hostname -I | cut -d ' ' -f1

My launch.json still matches what has been shared.

Tested and working when viewing my WP Homepage:

So based on my many hours of troubleshooting, I think the issue that has popped up can be resolved by editing the xdebug config/restarting that container. Please let me know if this doesn’t work for you and I can put together a more in-depth guide. My goal here was to reproduce the issue and provide a solution while we wait for the DevKinsta update.

2 Likes

@Kevin Legend! That works perfectly, thanks so much for taking the time to figure out the work around, it’s very much appreciated!

1 Like

Thanks for taking the time to do that.

1 Like

Worked perfectly, thank you Kevin. I followed all the steps you outlined except changing my xdebug.idekey to docker. I left that set to VSCODE (my ide key) so it works with the cookie set by the xdebug helper chrome extension.

1 Like