Installing xdebug for use on remote server

I used instructions found in the PHPStorm docs with the xdebug3 set of code.
I’m just going to mention some specifics that aren’t listed in the PHPStorm docs or that I found particularly key.

Setting up an SSH tunnel

https://www.jetbrains.com/help/phpstorm/remote-debugging-via-ssh-tunnel.html#set-up-an-ssh-tunnel-to-the-remote-machine
This sets up a way for your remote server to talk to your local computer.
When you connect this way it’s simply going to open up a new connection in your terminal and then sit there. It has to stay open while you debug.

I have an ssh profile file setup and use this for my connection:

Host easyorthosandbox-qa-xdebug
  Hostname <hostnamehere>
  User kclark
  Port 22
  ServerAliveInterval 60
  IdentityFile <path/to/identity/file>
  RemoteForward 9003 localhost:9003

Local codebase

You need to have an exact copy of the codebase that you are going to debug on the remote server. Specifically the files you are going to debug needs to be exact, otherwise the breakpoint in your local code will still break there, but the variables and where the debugger steps to as you go from line to next line will be off and not make sense. Even one line difference can be slightly confusing, although I have done that. More importantly, if your files are not in sync your breakpoints might not break as they are set on lines that don’t have php code to execute on the remote server.

Remote file path mapping

When I connect to a new app I have to set the path mappings as my paths locally are different than the ones on the remote server.
https://www.jetbrains.com/help/phpstorm/remote-debugging-via-ssh-tunnel.html#no-mapping

It seems like you can set a directory mapping at a higher level than the file is at and it will fix the mapping for all files within that directory, so you don’t need to do it for each individual file.

API/Postman/Paw debugging

To debug a postman/paw/api call use one of these methods to tell xdebug that you want to debug with the call:https://stackoverflow.com/a/19147935
“attempt to debug every php script.” May not be preferable as it will slow down every call.
I used XDEBUG_SESSION_START=PHPSTORM as a url query and it worked.

Multiple Users

This is something I have yet to work out.

Xdebug only supports connecting to a single IP address, and does not automatically connect back to the IP address that runs the browser because of security reasons.
Here’s a couple resources:
https://intellij-support.jetbrains.com/hc/en-us/community/posts/360010264920-xdebug-multiple-developers-php-storm-dbgpproxy
https://www.jetbrains.com/help/phpstorm/multiuser-debugging-via-xdebug-proxies.html

Resources

https://www.jetbrains.com/help/phpstorm/remote-debugging-via-ssh-tunnel.html
https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html#downloadAndInstall
https://xdebug.org/docs/install#linux

https://www.jetbrains.com/help/phpstorm/multiuser-debugging-via-xdebug-proxies.html
https://xdebug.org/docs/dbgpProxy
https://xdebug.org/download#dbgpProxy
https://www.jetbrains.com/help/phpstorm/xdebug-proxy.html

https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

Leave a Reply

Your email address will not be published. Required fields are marked *