This feature is supported in the Ultimate edition only.
The following is only valid when PHP Plugin is installed and enabled!
In this section:
- Downloading and installing Xdebug
- Enabling Xdebug integration with the PHP interpreter
- Configuring Xdebug in IntelliJ IDEA
- Configuring Xdebug for using in the On-Demand mode
- Configuring Xdebug for using in the Just-In-Time mode
Downloading and installing Xdebug
Download the Xdebug
extension compatible with your version of PHP
and save it in the php/ folder.
-
The location of the
php/folder is defined during the installation of the PHP engine. -
If you are using an AMP package, the Xdebug extension may be already installed.
Follow the instructions in the
xdebug.txt.
for detailed step-by-step instructions.
Enabling Xdebug integration with the PHP interpreter
- Open the active
php.inifile in the editor:- Open the Settings / Preferences Dialog by pressing ⌘,⌘,⌘,⌥F7⌃⌥S or by choosing for Windows and Linux or for macOS, and click PHP under Languages & Frameworks.
-
On the PHP page that opens, click
next to the CLI Interpreter field.
-
In the CLI Interpreters dialog box that opens, the Configuration File read-only field
shows the path to the active
php.inifile. Click Open in Editor.
- To disable the Zend Debugger and Zend Optimizer tools, that blocks Xdebug,
remove or comment the following lines in the
php.inifile:zend_extension=<path_to_zend_debugger> zend_extension=<path_to_zend_optimizer> - To enable Xdebug, locate the
[Xdebug]section in thephp.inifile and update it as follows:[Xdebug] zend_extension="<path to php_xdebug.dll>" xdebug.remote_enable=1 xdebug.remote_port="<the port for Xdebug to listen to>" (the default port is 9000) xdebug.profiler_enable=1 xdebug.profiler_output_dir="<AMP home\tmp>" -
To enable multiuser debugging via Xdebug proxies,
locate the
xdebug.idekeysetting and assign it a value of your choice. This value will be used to register your IDE on Xdebug proxy servers. - Save and close the
php.inifile.
Configuring Xdebug in IntelliJ IDEA
- Open the Settings / Preferences Dialog by pressing ⌘,⌘,⌘,⌥F7⌃⌥S or by choosing for Windows and Linux or for macOS, and click PHP under Languages & Frameworks.
-
Check the Xdebug installation associated with the selected PHP interpreter:
-
On the PHP page, choose the relevant PHP installation from the CLI Interpreter drop-down list
and click the Browse button
next to the field.
The list shows all the PHP installations available in IntelliJ IDEA, see Configuring Local PHP Interpreters
and Configuring Remote PHP Interpreters.
-
The CLI Interpreters dialog box that opens shows the following:
- The version of the selected PHP installation.
-
The name and version of the debugging engine associated with the selected PHP installation (Xdebug or Zend Debugger).
If no debugger is configured, IntelliJ IDEA shows
Debugger: Not installed.
Alternatively, open the Xdebug checker
, paste the output of the phpinfo(), and click Analyze my phpinfo() output. Learn more about checking the Xdebug installation in Validating the Configuration of a Debugging Engine. -
On the PHP page, choose the relevant PHP installation from the CLI Interpreter drop-down list
and click the Browse button
- Define the Xdebug behaviour. Click Debug under the PHP node.
On the Debug page that opens, specify the following settings in the Xdebug area:
-
In the Debug Port text box, appoint the port through which the tool will communicate with IntelliJ IDEA.
This must be exactly the same port number as specified in the
php.inifile:By default, Xdebug listens on port 9000.xdebug.remote_port = <port_number> - To have IntelliJ IDEA accept any incoming connections from Xdebug engines through the port specified in the Debug port text box, select the Can accept external connections checkbox.
-
Select the Force break at the first line when no path mapping is specified checkbox
to have the debugger stop as soon as it reaches and opens a file that is not mapped to any file in the project
on the Servers page. The debugger stops at the first line of this file and Debug Tool Window. Variables shows the following error message:
Cannot find a local copy of the file on server <path to the file on the server> and a link Click to set up mappings.
Click the link to open the Resolve Path Mappings Problem dialog box and map the problem file to its local copy.
When this checkbox cleared, the debugger does not stop upon reaching and opening an unmapped file, the file is just processed, and no error messages are displayed.
- Select the Force break at the first line when the script is outside the project checkbox to have the debugger stop at the first line as soon as it reaches and opens a file outside the current project. With this checkbox cleared, the debugger continues upon opening a file outside the current project.
-
In the Debug Port text box, appoint the port through which the tool will communicate with IntelliJ IDEA.
This must be exactly the same port number as specified in the
-
In the External Connections area,
specify how you want IntelliJ IDEA to treat connections received from hosts and through ports that are not registered as deployment server configurations.
- Ignore external connections through unregistered server configurations: Select this checkbox to have IntelliJ IDEA ignore connections received from hosts and through ports that are not registered as deployment server configurations. When this checkbox is selected, IntelliJ IDEA does not attempt to create a deployment server configuration automatically.
- Break at first line in PHP scripts: Select this checkbox to have the debugger stop as soon as connection between it and IntelliJ IDEA is established (instead of running automatically until the first breakpoint is reached). Alternatively turn on the Run | Break at first line in PHP scripts option on the main menu.
- Max. simultaneous connections: Use this spin box to limit the number of external connections that can be processed simultaneously.
Configuring Xdebug for using in the On-Demand mode
Starting with version 2016.2, IntelliJ IDEA supports the On-Demand mode where you can disable Xdebug for your global PHP installation, and have it enabled automatically on demand only when you are debugging your command-line scripts or when you need code coverage reports. This lets your command line scripts (including Composer and unit tests) run much faster.
-
Disable Xdebug for command-line scripts:
- Open the Settings / Preferences Dialog by pressing ⌘,⌘,⌘,⌥F7⌃⌥S or by choosing for Windows and Linux or for macOS, and click PHP under Languages & Frameworks.
-
From the PHP executable drop-down list, choose the relevant PHP interpreter and click
next to it.
In the CLI Interpreters dialog box that opens, click the Open in Editor link
next to the Configuration file: <path to php.ini> file.
Close all the dialog boxes and switch to the tab where the php.inifile is opened. -
In the
php.inifile, find the[XDebug]section and comment the following line in it by adding;in preposition:;[XDebug] ;zend_extension = "<full_path_to_xdebug>" -
Open the CLI Interpreters dialog box and click
next to the PHP executable field.
IntelliJ IDEA informs you that debugger is not installed:

-
To enable IntelliJ IDEA to activate Xdebug when it is necessary, specify the path to it in the Debugger extension text box,
in the Additional area. Type the path manually or click
and select the location in the dialog box that opens.
Configuring Xdebug for using in the Just-In-Time mode
IntelliJ IDEA supports the use of Xdebug in the Just-In-Time (JIT) mode so it is not attached to your code all the time
but connects to IntelliJ IDEA only when an error occurs or an exception is thrown. The Xdebug operation mode is toggled
through the xdebug.remote_mode
setting, which is by default set to req.
The mode is available both for debugging command-line scripts and for web server debugging.
Depending on whether you are going to debug command-line scripts or use a Web server, use one of the scenarios below.
Command-line scripts
For debugging command-line scripts, specify the custom-dxdebug.remote_mode=jit directive as an additional configuration option:
- Open the Settings / Preferences Dialog by pressing ⌘,⌘,⌘,⌥F7⌃⌥S or by choosing for Windows and Linux or for macOS, and click PHP under Languages & Frameworks.
-
From the PHP executable drop-down list, choose the relevant PHP interpreter and click
next to it.
-
In the CLI Interpreters dialog box that opens, click
next to the Configuration options text box
in the Additional area.
-
In the Configuration options dialog that opens, click
to add a new entry, then type -dxdebug.remote_modein the Configuration directive field andjitin the Value field.When you click OK, you return to the CLI Interpreters dialog box where the Configuration options text box shows
-dxdebug.remote_mode=jit.
Web server debugging
- On the main menu, choose Run | Web Server Debug Validation.
-
In the Web Server Debug Validation Dialog that opens, choose the Web server to validate the debugger on.
-
Choose Local Web Server or Shared Folder
to check a debugger associated with a local Web server.
-
Path to Create Validation Script:
In this field, specify the absolute path to the folder under the server document root where the validation script will be created.
For Web servers of the type Inplace, the folder is under the project root.
The folder must be accessible through http.
-
URL to Validation Script:
In this text box, type the URL address of the folder where the validation script will be created.
If the project root is mapped to a folder accessible through
http, you can specify the project root or any other folder under it.
-
Path to Create Validation Script:
In this field, specify the absolute path to the folder under the server document root where the validation script will be created.
For Web servers of the type Inplace, the folder is under the project root.
-
Choose Remote Web Server
to check a debugger associated with a remote server.
- Path to Create Validation Script: In this field, specify the absolute path to the folder under the server document root where the validation script will be created. The folder must be accessible through http.
-
Deployment Server:
In this field, specify the server access configuration of the type Local Server
or Remote Server to access the target environment.
For details see Configuring Synchronization with a Web Server.
Choose a configuration from the drop-down list or click the Browse button
in the Deployment dialog.
-
Choose Local Web Server or Shared Folder
to check a debugger associated with a local Web server.
- Click Validate to have IntelliJ IDEA create a validation script, deploy it to the target remote environment, and run it there.
-
Open the
php.inifile which is reported as loaded and associated with Xdebug. -
In the
php.inifile, find the[XDebug]section and change the value of thexdebug.remote_modefrom the defaultreqtojit.
See also Just-In-Time debugging and PHP Exception Breakpoints with PhpStorm and Xdebug
See Also
Procedures:
- Configuring PHP Development Environment
- Creating and Editing Run/Debug Configurations
- Multiuser Debugging Via Xdebug Proxies
- Configuring Zend Debugger
Reference:
External Links: