Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

Community News:
Day Camp 4 Developers - Debugging Beyond var_dump()
Jul 14, 2015 @ 08:50:14

The Day Camp 4 Developers online "conference" has officially announced their latest event, "Debugging Beyond var_dump()", happening Friday September 18th from 9am through 3pm (CST). This time around they're putting it on with the help of the fine folks at php[architect] too.

This latest edition of the excellent event features several well known speakers talking about debugging tips and sharing tools that can make you a more effective developer:

  • "PHP Profiling, an Introduction" (Fabien Potencier)
  • "Debugging: Past, Present and Future" (Derick Rethans)
  • "Characterization Testing for Legacy Applications" (Paul M. Jones)
  • "Modern Tools for API Debugging and Testing" (Neil Mansilla)
  • "Don't Reboot, Debug!" (Joshua Thijssen)

Much like it's siblings, the Day Camp 4 Developers event is completely virtual and is held via a webcast. Tickets will soon be sale and, compared to the usual cost of a conference ticket, are quite cheap. There's even group tickets available if you'd like to hold a "watch party" in your office.

Check out the Day Camp 4 Developers site for more information or to pick up your tickets!

tagged: daycamp4developer debugging vardump fabienpotencier derickrethans pauljones neilmansalla joshuathijssen

Link: http://daycamp4developers.com/

Gary Hockin:
Debugging PHP Command Line (with PHPStorm and XDebug)
May 07, 2015 @ 11:47:09

Gary Hockin has a recent post showing how you can debug PHP HTTP requests from the command line using PHPStorm and XDebug. These instructions aren't specific to PHPStorm, however. They can be used in any IDE/editor that supports remote XDebug connections.

At PHP North West I had huge difficulties configuring Xdebug and both my PHP and PHP Storm so they play nice in a CLI environment. So here, for others and almost certainly my future self, is how to do it.

He goes through each step of the setup process assuming that you already have the necessary software installed. He shows how to configure XDebug for remote debugging in the ini configuration, setting up PHPStorm to receive the connection and, finally, adding the "XDEBUG_CONFIG" environment variable to tell PHP to relay the requests back to your waiting IDE.

tagged: remote debugging phpstorm commandline xdebug configure setup environment

Link: http://blog.hock.in/2015/05/04/debugging-php-command-line-with-php-storm/

Derick Rethans:
Xdebug 2.3: Improvements to Debugging
Mar 25, 2015 @ 09:13:34

In the latest in his series covering some of the improvements in the latest Xdebug release, Derick Rethans has posted this new article detailing some of the performance enhancements related to remote debugging that come with this new version.

This is the fourth article in a series about new features in Xdebug 2.3, which was first released on February 22nd. In this article we are looking at the improvements towards "remote" debugging.

The updates include showing the values of user-defined constants, being able to set an exception breakpoint on all exceptions and additional features around debugging the exceptions themselves. The output now includes the exception's error code and which exception the flow was broken on (though in his example of PHPStorm, the IDE won't report that information back). The last change he mentions is a change that reverts the output to a log if it can't write to a socket (usually SELinux related).

tagged: xdebug performance improvement remote debugging version release

Link: http://derickrethans.nl/xdebug-2.3-debugging-improvements.html

Derick Rethans:
Xdebug 2.3: Munging errors
Mar 10, 2015 @ 09:15:47

Derick Rethans has posted a new part of his series looking at the improvements that came with the latest Xdebug release (v2.3). In this new article he talks about error handling and intercepting them to make debugging simpler.

One of the first features I added to Xdebug was the interception of error messages, so that it was possible for me to include a stack trace. Xdebug 2.3 has a few additional settings to control the behaviour of interception.

He covers the addition of three new settings: xdebug.halt_level, force_display_errors and force_error_reporting. Each of these is designed to provide you with customizable error reporting. Each setting comes with an example of its configuration and how it modifies the output of the resulting errors.

tagged: xdebug error haltlevel force reporting display debugging tool

Link: http://derickrethans.nl/xdebug-2.3-error-munging.html

Stephan Hochdörfer:
Configuring Xdebug and phpstorm for CLI debugging
Feb 11, 2015 @ 11:24:09

Stephan Hochdörfer has a quick post to the bitExpert blog today showing you how to configure Xdebug+PHPStorm for CLI debugging, making it even easier to work with command-line PHP applications.

Current situation: I have no local webserver running and just php5-cli (plus a few extensions) installed as most of the development I do will make use of a Vagrant machine. From time to time I develop small tools or libs which I like to debug on the command line. This is an overview how I configured my Ubuntu 14.04 box to handle debugging with Xdebug and phpstorm.

He starts with helping you get Xdebug installed (via PECL) and configured for local debugging. Next he adds some variables to the .bashrc configuration file with the IDE and Xdebug configuration details. Finally he gives the instructions to get PHPStorm to play nicely with this setup via it's own "Servers" support.

tagged: configure phpstorm debugging tutorial localhost server

Link: https://blog.bitexpert.de/blog/configuring-xdebug-and-phpstorm-for-cli-debugging/

SitePoint PHP Blog:
Interactive PHP Debugging with PsySH
Sep 30, 2014 @ 12:53:30

The SitePoint PHP blog has a new tutorial posted by i>Miguel Ibarra Romero showing how to use the PsySH tool to do some interactive debugging of your PHP applications via both the command line and a web frontend.

It’s 1:00 a.m., the deadline for your web application’s delivery is in 8 hours… and it’s not working. As you try to figure out what’s going on, you fill your code with var_dump() and die() everywhere to see where the bug is. [...] Is this situation familiar to you? PsySH to the rescue. PsySH is a Read-Eval-Print Loop (or REPL). You may have used a REPL before via your browser’s javascript console. If you have, you know that it possesses a lot of power and can be useful while debugging your JS code.

He walks you through the install via Composer and some of the basic commands and syntax for executing PHP code inside its shell. Command line testing is good, but debugging full applications is a bit more difficult. He shows how to integrate the tool into a sample application that calls PsySH via a "debug" call and output via a set of "window" objects. He also includes a bit close to the end about debugging with unit tests, executing them from inside the shell as well.

tagged: interactive debugging psysh repl unittest commandline web

Link: http://www.sitepoint.com/interactive-php-debugging-psysh/

Dutch Web Alliance:
The definitive remote debug and unittest with PHPStorm guide: part 7
Jan 29, 2014 @ 10:54:25

The Dutch Web Alliance has posted the seventh part of their series looking at getting remote debugging and unit testing working with PHPStorm, a popular PHP IDE. You can start at the beginning or just find the links to any other articles in the series you might have missed in the first post.

So, your unit-tests should be small, not doing much, taking one unit at a time to test. Overall, not much is around to actually debug. But on occasion, having the ability to actually stepping through the unit-tests can save you a headache or two! Debugging your PHPUnit scripts isn’t really that hard. In fact, most of what we need to do, we already covered in the previous postings! Consider this: PHPUnit is nothing more than a PHP framework running from the command line interface. And since we already know how to debug applications from the CLI, it must be easy!

This is the last post in the series and is pretty short. It basically talks about setting breakpoints in testing and letting PHPStorm catch the issues. If you'd rather run them from the command line, check out part six for more details.

tagged: debugging unittest remote phpstorm tutorial series part6

Link: https://dutchweballiance.nl/techblog/the-definitive-remote-debug-and-unittest-with-phpstorm-guide-part-7/

Dutch Web Alliance:
The definitive remote debug and unittest with PHPStorm guide: part 3
Dec 11, 2013 @ 09:19:23

The Dutch Web Alliance has posted the latest part in their "remote debugging with PHPStorm" series (parts one & two are linked here) with part three. This time they focus on setting up Xdebug and configuring the connection in the IDE.

Let’s start with probably the most important part of all: debugging your web applications. In this day and age, people still use var_dump() and die() to debug their application. A shame really, knowing that step-debugging through your code is made really easy with PHPStorm. Using var_dump() is very slow, error prone and you only get a small fraction of the context you need in order to debug correctly. And how many times did such a var_dump() hit your production environment?? Truth be told, implementing XDebug does need a little bit of work, but fortunately PHPStorm has made things super easy for us.

They don't go through the whole installation part of Xdebug - there's other guides for that - but do help you configure it correctly to work with a remote debugger in PHPStorm. They show you how to set various breakpoints and a "trick" to working with path mappings.

tagged: phpstorm remote debugging unittest tutorial series part3

Link: http://dutchweballiance.nl/techblog/the-definitive-remote-debug-and-unittest-with-phpstorm-guide-part-3/

Dutch Web Alliance:
The definitive remote debug and unittest with PHPStorm guide
Dec 06, 2013 @ 11:48:38

On the Dutch Web Alliance site today they've kicked off a new series of posts looking to help you get the most out of the PHPStorm IDE for remote PHP debugging and unit testing your application.

PHPStorm is probably the best IDE when it comes to PHP development. [...] This multi-part guide will try and set up your systems in such a way that EVERYTHING you need to do when it comes to development gets explained so you can set your system up correctly, once and for all. Meet the “definitive remote debugging and unittest with PHPStorm guide”. Even though PHPStorm always had many different ways of editing, syncing and deploying your scripts, it was not until PHPStorm 7 that we finally have an IDE that can work fully on a virtualized remote system. In the next couple of blog posts I will try and give you a tour on how to set up your systems so they actually work.

So far they've posted the first two parts of the series:

Keep tuned in to this post (or their feed) for updates to the series and new articles as they're posted.

tagged: remote debugging unittest phpunit phpstorm guide series

Link: http://dutchweballiance.nl/techblog/the-definitive-remote-debug-and-unittest-with-phpstorm-guide/

NetTuts.com:
Xdebug - Professional PHP Debugging
Aug 29, 2013 @ 09:56:01

On NetTuts.com there's a new article introducing Xdebug, a powerful tool that can help you with debugging your PHP applications. It works by investigating what's happening "on the inside" and reporting it back to your debugger.

Well, technically, Xdebug is an extension for PHP to make your life easier while debugging your code. [...] But just imagine for a moment, as your applications evolve, you might get into the habit of sprinkling your code all over with little echos, var_dumps and custom debuggers. [...] The next question is: how do you debug in production? [...] Now lastly, have you ever wished to be able to step through your code, line by line, watch expressions, and even step into a function call to see why it’s producing the wrong return value? Well, you should definitely dig into the world of professional debugging with Xdebug, as it can solve all of the problems above.

They walk you through the setup of a complete (MAMP-based) environment on an OSX installation. You'll also need Xcode and the command line tools to be able to compile Xdebug. They recommend installing Homebrew to make installing the needed tools easier. They use Homebrew to install the PHP 5.4 version of Xdebug which then compiles and outputs a shared module you can put in your PHP extensions directory.

On the other side of things, the article also helps you set up your IDE, in this case PHPStorm but it would work for lots of others - to accept the debug messages from the server. He includes a sample script with some calls to the Xdebug-enabled debugging functions and what kind of responses (with screenshots) you should see in your IDE.

tagged: xdebug debugging extension homebrew mamp osx install tutorial

Link: http://net.tutsplus.com/tutorials/tools-and-tips/xdebug-professional-php-debugging/