Once the SSH tunnel is set up, we can start debugging using zero-configuration debugging with Xdebug or Zend Debugger. When a machine is rebooted or the connection is lost, the SSH tunnel has to be reestablished. Make sure that you are running a command to create an SSH tunnel from the developer's machine to the server (not vice versa). To save the connection parameters for further use, switch to the Session node, select the session in the Saved Sessions list, and click Save.Ĭlick Open to connect to the remote server and setup the SSH tunnel. Make sure to select the "Remote" option and then click Add. The source port will be 9000 (for Xdebug 2), 9003 (for Xdebug 3), or 10137 (for Zend Debugger).įor destination, enter localhost:9000 (for Xdebug 2), localhost:9003 (for Xdebug 3) or localhost :10137 (for Zend Debugger). The setup process depends on the operating system and the debugger being used.Ĭonfigure the connection to the remote machine by providing the hostname and port.Įxpand the Connection | SSH | Tunnels node on the left and add a new forwarded port. This can be done using the PhpStorm bookmarklets, a Browser Debugging Extension, or the techniques outlined in Debugging PHP CLI scripts with PhpStorm. In this case, we need to make the debugger connect back to the developer machine by setting xdebug.remote_host=ip_address (for Xdebug 2), xdebug.client_host=ip_address (for Xdebug 3) or making sure the debug host is the IP address of the developer machine (for Zend Debugger). When the remote server can connect to the developer machine directly (for example, with a Vagrant machine), an SSH tunnel may not be needed. The SSH tunnel is used for connecting through a firewall and establishing a secure connection between the remote server and the developer machine. The idea is to create a "virtual" TCP port on the remote server that sends its traffic to a TCP port on our own machine, tunneling traffic over SSH. What we want to do is connect to the remote machine over SSH and set up port forwarding for port 9000 (for Xdebug 2), 9003 (for Xdebug 3), or 10137 (Zend Debugger). Set up an SSH tunnel to the remote machine Before launching the script, make sure that either a breakpoint is set or the Break at first line in PHP scripts option is enabled on the Debug page of the Settings/Preferences dialog Ctrl+Alt+S. This will ensure PhpStorm reacts when a debugging session is started and opens the Debug tool window automatically. In PhpStorm, enable listening to incoming debug connections by either clicking on the toolbar or selecting Run | Start Listening for PHP Debug Connections in the main menu. Listening for incoming debugger connections When using Xdebug, make sure at least the following settings are specified: In the CLI Interpreters dialog that opens, the Configuration file read-only field shows the path to the active php.ini file. On the PHP page that opens, click next to the CLI Interpreter field. In the Settings/Preferences dialog ( Ctrl+Alt+S), click PHP. Open the active php.ini file in the editor:
#Phpstorm debugging update
To avoid this problem, you need to update the corresponding sections in the php.ini file as described in Configure Xdebug and Configure Zend Debugger. These tools cannot be used simultaneously because they block each other. PhpStorm supports debugging with two most popular tools: Xdebug and Zend Debugger. Prepare the debugging engineīefore you start debugging, make sure that you have a debugging engine installed and configured properly.
#Phpstorm debugging code
This can be useful for debugging code on a remote machine when there are firewalls in between, or a NAT router prevents direct connection, or the ISP or network infrastructure does not allow incoming TCP connections to the developer machine.
#Phpstorm debugging how to
This tutorial describes how to use an SSH tunnel to setup a secure connection between the development machine and a remote server.