This part of the tutorial continues from part 1. So, make sure your Homestead is up and running under Vagrant.

Opening the project with PHPStorm

First, open the project with PHP Storm.

File > Open Directory > Choose {PROJECT_DIRECTORY}

 

After opening the directory, you might want to add .idea to your .gitignore file to ignore versioning of PHPStorm configuration settings. I usually add this directory to .gitignore, but if you’re on a team, you might want to consider alternatives.

After opening the project directory in PHPStorm, it automatically configured Vagrant. So, I was able to run Vagrant commands like up, halt, destroy, etc. using PHPStorm’s Vagrant menu:

Tools > Vagrant

 

Configuring the Remote Interpreter

I’ll basically sum up the documentation from JetBrains.com’s website on setting up a remote interpreter.

In PHPStorm open the PHP settings:

File > Settings > Languages & Frameworks > PHP

 

Click the ellipsis button (…) next to the <no interpreter> dropdown.

no-interpreter

Click the green + button and choose the Remote option. Then, select Vagrant from the list of options. Be sure that the Vagrant Instance Folder is pointed to your root project directory. It should take a few seconds, but PHPStorm should auto-configure the rest. Click Okay.

interpreter2

Give this interpreter a name. I named mine Remote PHP 7. I also checked the “Visible only for this project” checkbox because I don’t want to see this interpreter for other projects. See the screenshot for my configuration.

interpreter4

Choose the newly setup Remote PHP 7 interpreter profile from the dropdown menu and click Apply. See screenshot for my configuration

interpreter3

Congratulations, the remote interpreter is now setup.

Configure Remote Debugging

The next part follows jetbrains.com’s documentation on configuring Vagrant for debugging.

In PHPStorm, open the Web Server Debug Validation menu:

Run > Web Server Debug Validation

 

Choose the Local Web Server or Shared Folder radio button.

Make sure the Path to Validation Script is set to:

 

{PROJECT_DIRECTORY}\public

 

Set the URL to validation script the same as your local testing domain. So for mine, I used

http://filter-products.dev

 

So the next part is a little trickier. We need to modify Homestead’s xdebug configuration so that we can get the validation to work correctly. But, this requires us to SSH instead the Vagrant box and modify some settings. If you were to try and validate right now, you’d notice a several yellow notices. We need all of these yellow notices to be blue, indicating a successful validation.

SSH into the Vagrant machine using PHPStorm (or terminal/command prompt):

Tools > Start SSH Session

 

We’ll change into PHP’s conf.d directory:

cd /etc/php/7.0/fpm/conf.d

 

Now let’s edit the xdebug configuration file using vi. You can use nano or whichever shell editor you’re comfortable with.

sudo vi 20-xdebug.ini

 

We’re now using vi to edit the file. Press SHIFT+A and this will place the cursor at the end of the first line and it will also put vi in insert mode. Press return a couple of times to create some emtpy lines.

Add these configuration lines:

xdebug.remote_enable = 1
xdebug.remote_connect_back = 1;
xdebug.remote_port = 9000
xdebug.remote_host = filter-products.dev

 

Be sure that you set xdebug.remote_host to the domain that you’ll be using. In this case, mine was filter-products.dev.

Press escape to exit insert mode.

Type :wq and then hit return. `w` stands for write (save). `q` stands for quit vi. This should have saved the file and quit vi.

** If for some reason you messed up, you can hit escape and type :q!. This will quit vi without saving changes.

See the screenshot to see what your 20-xdebug-.ini file should look like

xdebug1

Once you’re out of vi, you need to restart the php service. Still, using PHPStorm’s terminal editor, runthe following:

sudo service php7.0-fpm restart

 

Jump back to PHPStorm and test the validation. Everything should now have blue exclamation points. This is good.

debug1

Setting up a run configuration in PHPStorm

Next, we’ll setup a run configuration for our project. Open the Run/Debug configuration menu in PHPStorm:

Run > Edit Configuration

 

Click the Green + and choose PHP Web Application

Give this profile a name, I chose filter-products.dev

Click the ellipsis button (…) next to Server:.

Click the Green + button.

Give this Server a name, I chose filter-products.dev

Under host, type the domain you’re using. Again, I used filter-products.dev as the host.

Under File directory, Be sure to set the project directory as the File/Directory and the matching path on the VM. For example: `/home/vagrant/filter-products` in my case. See the screenshot for my final server settings.

server1

Apply those settings and hit okay.

Back at the configuration profile screen. Make sure your new server is selected as the server. Starting URL is `/`. Choose your default browser. See the screenshot for my settings.

profile1

We have now setup the run configuration for our project.

Adding and configuring XDebug Helper for Chrome

Now we’ll finally setup the PHPStorm’s XDebug helper in Chrome. This will allow us to debug our application without needing to insert the XDebug HTTP GET parameters. Our guide sums up the documentation from the official JetBrains website on setting up debugging with Chrome.

** Note that this part of the tutorial depends on chrome, but there are several versions of the XDebug Helper plugin for other browsers.

First, add the Xdebug Chrome extension: Download Link

In Chrome, Right click the bug icon and selet PHPStorm as the IDE

debugplugin1

In PHPStorm open the PHP Debug connections menu and start listening for debug connections:

Run > Start listening for PHP Debug connections

 

We’ll now test the connection. Set a breakpoint somewhere in your application. I set mine in routes.php on the `return view(‘welcome’); `line. See the screenshot for an example.

breakpoint1

You can tell there’s a breakpoint if you see the big red circle next to the line where you set the breakpoint.

In Chrome, go to your testing site (mine was fliter-products.dev)

Click the bug icon and choose “Debug” so it turns green.

Refresh the page and you’ll notice your application won’t load. This is because it has hit the debug breakpoint in your routes.php file!

Go back into PHPStorm and open the Debugger tab (PHPStorm might automatically open it for you).

View > Tool Windows > Debug

 

You’ll now see you have all of the debugger information and actions available, such as step over, step into, etc.

debugger1

Conclusion

Congratulations. You’ve setup PHPStorm for debugging and you’re ready to build an application.