Debugging with a PHP Web Application Debug Configuration
On this page:
- Introduction
- Preparing the debugging engine
- Setting breakpoints
- Creating a debug configuration of the type PHP Web Application
- Initiating a debugging session and examining the suspended program
- Specifying scripts to skip requests to
Introduction
In this debugging mode, PhpStorm fully controls the debugging process: it launches the application, opens the browser, and activates the debugging engine according to a PHP Web Application debug configuration.
A PHP Web Application debug configuration tells PhpStorm the URL address to access the starting page of the application, the browser to open the starting page in, and the debug server configuration to use.
You can also 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".
Preparing the debugging engine
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.
Setting breakpoints
Breakpoints are source code markers used to trigger actions during a debugging session. Typically, the purpose behind setting a breakpoint is to suspend program execution to allow you to examine program data. However, PhpStorm can use breakpoints as triggers for a variety of different actions. Breakpoints can be set at any time during the debugging process. Your breakpoints don't affect your source files directly, but the breakpoints and their settings are saved with your PhpStorm project so you can reuse them across debugging sessions.
-
Place the caret on the desired line of the source code.
Breakpoints can be set in the PHP context inside
*.php
,*.html
, and files of other types. Only executable lines are valid locations for line breakpoints. Comments, declarations, and empty lines are not valid locations for the - Do one of the following:
Creating a debug configuration of the type PHP Web Application
- Open the Run/Debug Configuration dialog box by doing one of the following:
- Click
on the toolbar or press Insert. From the drop-down list, select the PHP Web Application configuration type. The PHP Web Application dialog box opens.
- Specify the configuration name.
- Choose the applicable debug server configuration from the Server drop-down list
or click the Browse button
. and define a debug server configuration in the Servers dialog box that opens as described in Creating a PHP Debug Server Configuration
- In the Start URL text box, type the server path to the file that implements the application starting page. Specify the path relative to the server configuration root ( The server configuration root is the highest folder in the file tree on the local or remote server accessible through the server configuration. For in-place servers, it is the project root. ). The read-only field below shows the URL address of the application starting page. The URL address is composed dynamically as you type.
- Specify the browser to open the application in. Choose a configured browser from the
Browser drop-down list or click the Browse button
and specify another browser in the Web Browsers dialog box that opens.
Initiating a debugging session and examining the suspended program
- To start debugging, click the Debug button
on the toolbar.
- As soon as the debugger suspends on reaching the first breakpoint, examine the application by analyzing frames. A frame corresponds to an active method or function call and stores the local variables of the called method or function, the arguments to it, and the code context that enables expression evaluation. All currently active frames are displayed on the Frames pane of the Debug tool window. where you can switch between them and analyze the information stored therein in the Variables and Watches panes. For more details, see the section Examining Suspended Program.
-
Continue running the program and examine its frames as soon as it is suspended again.
- To control the program execution manually, step through the code using the commands under the menu or toolbar buttons: (F7), (Shift+F8), (F8), and others. For more details, see Stepping Through the Program.
- To have the program run automatically up to the next breakpoint, resume the session by choosing or pressing F9
Specifying scripts to skip requests to
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".
- Open the Settings / Preferences Dialog by pressing Ctrl+Alt+S or by choosing for Windows and Linux or for OS X. Expand the PHP node under Languages & Frameworks, and then click Skipped Paths under Debug.
-
On the Skipped Paths page that opens, configure an "ignore list" of scripts and folders with scripts not to be invoked if PhpStorm receives incoming connections to them.
-
To add a new entry to the list, click the Add button
or press Alt+Insert. Then click the Browse button
and in the dialog box that opens choose the file or folder to skip connections to.
-
To remove an entry from the list, select it and click the Remove button
or press Alt+Delete. The script will be now executed upon receiving requests to it.
-
To add a new entry to the list, click the Add button
- To have PhpStorm inform you every time it receives a request to a script to be skipped, select the Notify about skipped paths check box.