Phpstorm Xdebug Php

Posted on  by 



  1. PhpStorm 2020.3 is now available! This major release includes full support for PHP 8, static analyzers PHPStan and Psalm, Xdebug 3, Tailwind CSS, collaborative development via Code With Me, and much more.
  2. Today, I am going to show a very simple way to use Xdebug, PHPStorm and Symfony in order to debug an application. PHPStorm is the best IDE I have used so far and it comes with amazing functionalities.
  3. Xdebug is a PHP extension which provides debugging, profiling, code coverage, stack traces and many other capabilities. In this succinct tutorial, I will show us how to set up Xdebug that ships with XAMPP in PhpStorm. See the steps below. Open up php.ini (located at C: path-to-xampp php) for editing.
  1. Xdebug Php
  2. Phpstorm Xdebug Ssh
  3. Phpstorm Xdebug Hangs

Learn how to configure XDebug and PHPUnit in PHPStorm, allowing you to write better tests and fix bugs faster.

PhpStorm 2020.3 is now available! This major release includes full support for PHP 8, static analyzers PHPStan and Psalm, Xdebug 3, Tailwind CSS, collaborative development via Code With Me, and much more. Download PhpStorm 2020.3 Read on for details on all the new features and significant updates, along with a ton of GIFs! Configuring PhpStorm’s PHP Setup. Now that Xdebug’s installed and configured, we need to configure PhpStorm. To do that, in PhpStorm’s settings, under “Languages & Frameworks - PHP”, click on the More button, next to the CLI Interpreter dropdown list, which you can see an example of in the screenshot below.

Test Driven Development (TDD) is an old topic, I know, but it seems many people don’t understand how it makes you write better code. The point here is that one of the most important benefits it’s to use debugging tools together with tests, making your flow more efficient.

Xdebug Php

I started using TDD on the command line, and still use it sometimes, but since I started using PHPStorm and decided to try how it handles tests, and that’s amazing! When you add debugging tools – like XDebug – to it everything starts making sense, then you have the feeling you’re on the right path.

PHPStorm has a dedicated interface to run and debug tests, almost in the same window, what makes the process of writing code safer and easier.

I’m not gonna teach you how to write tests and even how TDD is good. I’m assuming you already have some tests written and just want to run them in PHPStorm, debugging with XDebug. I’m gonna use the tests from my open source project Corcel.

PHPStorm

Configuring XDebug

First let’s configure XDebug in PHPStorm. We’re assuming here you already have the xdebug PHP extension installed. In my case, I’m using Laravel Valet, and it runs on the port 9000, the same port XDebug runs by default. So I had to update my php.ini file to change its port to 9001. My config file is located at /usr/local/etc/php/7.2/conf.d/ext-xdebug.ini:

When type php -v in the command line I can saw the XDebug extension enabled:

Then, in PHPStorm (I’m using currently version 2017.3), go to Preferences and Languages & Frameworks -> PHP -> Debug. Configure your XDebug port and uncheck some pre-checked options, just to avoid creating unnecessaries break points.

Configuring PHPUnit

First we must tell PHPStorm which PHP version we’re using and where is that PHP binary. This is necessary for code checks in the IDE and for running PHPUnit. Just set that in your IDE’s preferences window. You should set something like this:

Now go to Run -> Edit Configurations. Here we’re going to create a new configuration related to PHPUnit, give it the phpuni name and say PHPStorm we’d like to use the configurations in our phpunit.xml file.

Running Tests

Now let’s run all tests Corcel has. Go to Run -> Run and then select phpunit. This is the name we gave to the configuration we just created. You’ll see a new tab on the bottom of the window with all your tests running:

Running a Single Test

In this case we run all 139 tests. The point here is you can run just one test case or even the last one. In this new tab if you click on a single test case in the left sidebar and Control + Shift + R you’ll run just that specific test. The same can be used when you’re inside a class and want to run just one test/method. Inside any part of that method, if you press this shortcut you’ll run that test case. If you press the shortcut outside a test case method you’ll run tests for that specific class, all them.

Running the Last Test

If you’re fixing a bug in another class, not the test one, and you want to run that test again to see if it’s passing now. You can press Control + R shortcut. This tells PHPStorm to run the last run test, only. Then you don’t have to change the current file you are to run the last test case. Very useful!

Just to remember, Control + Shift + R to run the current test case you are, and Control + R to run the last run test case.

Debugging while Running Tests

The point here is you enabled XDebug. So you can debug while testing. Let’s take a simple test case from Corcel:

I’m gonna add a break point inside the $comment->isApproved() method, like this:

New Shortcuts to Debug

You know the shortcuts to run a single current test case (Control + Shift + R) and the last run test case (Control + R). If you to go the test case source code and run it you will not stop anywhere, because you’re running the test only.

To run tests with debugging support use Control + Shift + D for the single test case and Control + D for the last one, just replacing R by D.

If you run the same test with debugging support you’ll stop on that breakpoint, and then the magic starts happening. You will get a lot of information at that specific point, like current variables content and even continuing the executing step by step. You’ll get all that in the same tab you saw your tests running:

Then, debug your code. You have to useful commands/button to press. Here are some examples:

Conclusion

TDD and Debugging are two important steps in development. Once you start using them you cannot stop, but for sure, you’re writing better and safer code, believe me.

I hope this post helped you to start with testing and debugging in PHPStorm and made you feel excited about start using that. If you want to use a project to start testing and debugging you can clone Corcel on your machine and start running its tests in PHPStorm.

This section provides a handful selection of tutorials that will help you get started with PHP debugging in PhpStorm.

Quick Start

Phpstorm Xdebug Ssh

Before proceeding with any of the debugging scenarios, you need to choose a debugging engine and install it in your PHP environment. These tutorials will guide you through the installation process:

With the debugging engine installed, you can start debugging by following the zero-configuration debugging approach:

  1. Choose and install the browser extension suitable for your browser.

  2. On the PhpStorm toolbar, toggle to start listening for incoming PHP debug connections, or choose Run | Start Listening for PHP Debug Connections from the main menu.

  3. Set a breakpoint in your code. Breakpoints can be set in the PHP context inside PHP, HTML, TWIG, BLADE, and files of other types. Line breakpoints can be set only on executable lines, but not on comments, declarations, or empty lines. For details on getting started with Twig and Blade debugging, refer to Debug Twig templates and Debug Blade templates.

  4. Start the debugging session in the browser using the installed browser extension.

  5. During a debugging session, examine the program state: see variable values, evaluate expressions, step through the program, and so on.

See Zero-configuration debugging for the detailed step-by-step instructions, and Advanced debugging scenarios for more debugging scenarios.

Debugging a PHP web application

Depending on your environment, you can debug your PHP Web application locally or remotely.

Phpstorm Xdebug Hangs

Local debuggingRemote debugging
The debugging engine and PhpStorm are running on the same machine.The debugging engine is running on a remote environment (for example, a remote server or a virtual machine).
Follow the Zero-configuration debugging procedure.
  • If you can establish direct connection between your machine and the remote server, that is, no firewall, router or ISP is blocking the connection from your remote server to the specific port on the local machine, follow the Zero-configuration debugging procedure.

  • Otherwise, if direct connection cannot be established, follow the Remote debugging via SSH tunnel procedure.

To test direct connection, run the telnet host 9000 (for Xdebug) or the telnet host 10137 (for Zend Debugger) command on the remote server and ensure that connection is established. Here, host is the IP address of the local machine PhpStorm is running on.

To check for opened inbound ports, you can use canyouseeme.org or a similar service.

Debugging a PHP CLI script

Depending on your environment, you can debug your PHP CLI script locally or remotely.

Local debuggingRemote debugging
The debugging engine and PhpStorm are running on the same machine.The debugging engine is running on a remote environment (for example, a remote server or a virtual machine).
Follow the Debug a PHP CLI script procedure.
  1. Set up a remote PHP interpreter as described in Configure remote PHP interpreters.

  2. Follow the Debug a PHP CLI script procedure.

Besides running an entire application, you may want to run a PHPUnit or Behat test that covers a specific class, function or scenario, with the debugging engine attached. To learn how to do it, follow the Create a test configuration for a specific target procedure.

Troubleshooting

When using Xdebug or Zend Debugger with PhpStorm, some misconfiguration can prevent the debugger from working. In the Troubleshooting guide, you will find the description of some common issues and learn how to troubleshoot them.

Phpstorm

Advanced debugging scenarios

The following topics will assist you in exploring the advanced debugging scenarios in PhpStorm:





Coments are closed