Recently I was helping someone set up step debugging of PHP in Zend Studio to debug a remote site, and had some difficulties. So I decided to create this post to remind me later, and perhaps help others get it set up.
I was doing this on an Ubuntu laptop, so while menus may vary slightly the process should be very similar regardless of OS. Also, I did this using a local VirtualBox virtual machine, using Bridged networking mode to simulate a remote server. In Zend Studio I had a project created with the Zend Framework Skeleton Application, and created a virtualhost in the virtual environment that mirrored that.
NOTE: If the desire is to use a local server the setup is much simpler.
While this post doesn’t cover how to install Zend Debugger or Xdebug, ensure one of these are set up correctly. Also, ensure the debugger of choice “knows” where to find the IDE to be debugging from. Zend Debugger can try to do this automatically, or an IP can be manually specified within Zend Debugger or Xdebug. Also, if using Zend Debugger ensure the IP of the client is added to the whitelist. More on how to verify this IP from the client later.
Aiming at the server
The first step, assuming you already have a project created in Zend Studio, is to add a server to the project configuration. Do this in the preferences. (Windows|Preferences) With the preferences open, expand the PHP node to get to Servers.
From there click “New”, and follow the wizard for setup. The first step is to specify the type of server. In my case I was using an install of Zend Debugger that comes with Zend Server, so selected Remote Zend Server. Alternatively I could have easily selected Generic PHP Server to arrive at the same endpoint later.
Next, after giving this server a name and URL (ensure the URL actually hits the server), I am prompted for the Zend Server login credentials to gain access to the Zend Server Web API.
Entering the user and password authorizes Zend Studio to pull down an API key for interacting directly with Zend Server if I desired to later. (This creates a new Zend Server Web API Key on the server specifically for this client.) Alternatively it is possible to click Cancel and enter the credentials manually.
Again, this is not really required for simply debugging, but I’m including it for completeness sake.
At this point a test can be run to ensure we are hitting the server as expected by clicking the Test button.
NOTE: If this doesn’t end in a success you may have some network issues to overcome. See my post on using an SSH Tunnel if you need to.
After a success, click OK and then Finish the wizard. If you had troubles, please see my post for using an SSH tunnel.
Enable debugging for the project
With the server set up it is now possible to set up debugging for the Zend Studio project.
In the Preferences (Windows|Preferences) click on the Debug within the PHP node.
Though it is possible to specify the PHP Server globally from the resulting option screen I prefer to set up preferences for each project, since most of my projects may be different in any way. So I click Configure Project Specific Settings… link at the top of the dialog and am prompted to specify which project I desire to configure.
After selecting the appropriate project I can then appoint the server I just added above, and then specify the Base Path and ensure the Auto-generated Base URL is correct in the lower section.
After approving and closing the Preferences, we are ready to debug!!!
Test: If the following step doesn’t work it may be because the debugger on the server cannot find the IDE. In a browser check what ports the IDE is listening on by entering the following URL to hit Zend Studio’s built in web server.
If the debug_host doesn’t show an IP address reachable by the server then it may be necessary to manually specify the IP in Zend Studio by altering the server configuration we created previously.
If the IP address should be reachable by the server the issue may be in the configuration on the servers end, or perhaps a firewall or load balancer in between is limiting. Please see my post on how to get around this with an SSH tunnel.
Since I was using Zend Server in this example I have Z-Ray available, and while on a page I wished to debug I could simply click on the debug icon and select any of the debugging options.
This will cause Zend Debugger to contact Zend Studio for debugging, which in turn will ask the user if they wish to open the debugging perspective.
If Yes is selected the IDE is now ready to perform any debugging the user desires.
I hope this helps others. Happy debugging!!!
This post is one in a series on debugging. For others click below:
PhpStorm and debugging issue
Using an SSH tunnel to step debug through a firewall
Setting up local step debugging with PhpStorm