PHP Debugging Session
Before you start debugging, make sure that you have a debugging engine installed and configured properly. PhpStorm supports debugging with two most popular tools:
Xdebug and Zend Debugger.
These tools cannot be used simultaneously because they block each other.
To avoid this problem, you need to update the corresponding sections in the php.ini
file as described in Configuring Xdebug and Configuring Zend Debugger.
To open the active php.ini
file in the editor:
- Open the Settings / Preferences Dialog by pressing Ctrl+Alt+S or by choosing for Windows and Linux or for OS X, and click PHP under Languages&Frameworks.
-
On the PHP page that opens, click
next to the Interpreter field.
-
In the Interpreters dialog box that opens, the Configuration File read-only field
shows the path to the active
php.ini
file. Click Open in Editor.
For more information on configuring debugging engines, see Xdebug Installation Guide and Zend Debugger Installation Guide.
With PhpStorm, a PHP debugging session can be initiated either through a debug configuration or without it. The latter approach is also called Zero-configuration debugging. PhpStorm supports three main ways to initiate a PHP debugging session:
- You create a PHP Web Application debug configuration, and then PhpStorm uses its settings to launch the application, open the browser, and activate the debugging engine.
- You create a PHP HTTP Request debug configuration, PhpStorm generates a request on its base, and then accesses a specific page through this request.
- Zero-configuration debugging, when no debug configuration is created at all. Instead, you open the starting page of your PHP application in the browser manually and then activate the debugging engine from the browser, while PhpStorm listens to incoming debugger connections.
No matter which method you choose, you can specify the scripts requests to which you want PhpStorm to ignore during debugging.
This approach can be useful, when your application contains scripts that use AJAX. Suppose you have a menu-ajax-script.php
that "reloads" a part of your web page.
This script works properly so you do not need to debug it. However, this script is still requested during the debugging session. To have incoming connections to this script ignored,
add the menu-ajax-script.php
script to the skipped paths list. You can also group such scripts into folders and add these folders to the "ignore list".
When using Xdebug, you can also debug PHP applications in the multiuser mode via Xdebug proxy servers.
In this part:
- Creating a PHP Debug Server Configuration
- Debugging with a PHP Web Application Debug Configuration
- Zero-Configuration Debugging
- Debugging a PHP HTTP Request
- Debugging in the Just-in-Time Mode
- Debugging with PHP Exception Breakpoints