August 3, 2011

If you recently upgraded to Firebug 1.8 you will have noticed that FirePHP no longer worked and when visiting you would have seen a notice prompting you to upgrade to DeveloperCompanion.

The FirePHP Extension now (0.6) works again with Firebug 1.8: (will appear on mozilla add-ons once approved)

What Happened?

I have been working on FirePHP 1.0 (comparison) for a few years now to come up with a streamlined way to develop PHP (and other languages) code in the modern web environment. To make this a reality a new server library and client is needed. I wrote both of these from scratch based on a bunch of research utilizing the latest technologies (especially for the client).

What sets the FirePHP 1.0 (server library) apart is that it includes a new cross language intelligence system called Insight intended to bring the FirePHP way of debugging to other programming languages. Furthermore Insight is designed to support multiple clients that can embed the Insight system (composed of CommonJS modules) in order to bring native support to IDEs and other developer tools (this aspect is not ready yet but will receive significant attention in time).

I wrote the new client (DeveloperCompanion) to support all existing FirePHP Extension features plus new ones (to be released with Firebug 1.9) free of charge. The paid version builds on the free foundation by offering more streamlined and time-saving features.

The arrival of Firebug 1.8 brings along a bunch of internal changes which broke the FirePHP Extension 0.5 release. Given that DeveloperCompanion is sufficiently ready I decided not not fix the FirePHP Extension and thought I would upgrade users to DeveloperCompanion to ensure everyone can keep using FirePHP with Firebug 1.8.

Feedback from users

Then I started receiving feedback about this decision. Users were not happy that they were now required to install a commercial extension. I did not think that this would be a problem. In my view the free features DeveloperCompanion offers are superior to the ones offered by the FirePHP Extension (if you don’t think they are let me know so we can make it so) and since 2007 I have received only one patch for the FirePHP Extension. I thought users would not object to a closed-source extension for a while until FireConsole is ready.

There seem to be two groups of FirePHP users. One is looking for and needs the new features that FirePHP 1.0 brings and the other is happy with the simple approach of the FirePHPCore library and insist on the entire stack being open source at all times.

Go forward

I have decided to continue to maintain the FirePHP Extension but it will not be upgraded to be compatible with the new FirePHP 1.0 Insight features. That means the FirePHP Extension will continue to support the FirePHPCore library only and implementations written to be protocol compatible such as the native Zend Framework implementation.

Users who want to use the FirePHP 1.0 Insight features with an open source extension will need to wait for FireConsole. Anyone who does not object to installing a free closed-source client can use the new FirePHP 1.0 Insight features today with DeveloperCompanion.

Finally, anyone looking for features that will streamline their PHP and JavaScript development workflow and toolchain can license DeveloperCompanion and as a result support the further development of FirePHP, Insight and related technologies. I know we all love open source but producing open source software still takes time and money. I appreciate your support.

I trust that this will satisfy everyone’s needs. If not, please let me know.

January 6, 2011

FirePHP can nicely complement the built-in tools available when using Zend Server and can be easily made available to all provisioned sites. This tutorial illustrates how to setup FirePHP 1.0 for all virtual hosts on a Zend Server AMI on Amazon EC2.

Launching Zend Server Instance on EC2

Go to and follow the steps to launch an instance.

NOTE: The Zend Server instances launched this way are billed to you on an hourly basis at a rate set by Zend.

The instructions below should work for any Zend Server or Free Zend Server Community Edition installation. The assumption is you are working with a new PHP 5.2+ Zend Server install. If you already have sites provisioned you can adapt the instructions to fit your needs.

Continue reading »

December 17, 2010

FirePHP can be useful when debugging remote PHP applications on shared or dedicated servers. This tutorial illustrates how to setup FirePHP 1.0 on Magenting which is a managed Magento hosting service.

Account Creation

Go to and create an account. This tutorial was prepared by using a Spark account, but it should work just the same with all plans.

If you already have an account you can of course skip this step.

Continue reading »

November 29, 2010

Get started with FirePHP 1.0 in 5 steps. Why upgrade? Check out the new features.


Step 1: Install FirePHP Companion

Step 2: Download FirePHP 1.0

Continue reading »

October 28, 2010

I have finished and released updates to the FirePHP Firefox Extension, FirePHPCore Server Library and Zend Framework implementation. The updates include various bug fixes and new features.

Continue reading »

October 15, 2010

FirePHP is most often used for ad hock logging of variables during development by placing logging calls at strategic places in your code.

$someVariable = 'Some value';
// using FirePHPCore
$firephp = FirePHP::getInstance(true);
// using Zend_Log_Writer_Firebug
$logger = new Zend_Log(new Zend_Log_Writer_Firebug());
$logger->log($someVariable, Zend_Log::DEBUG);

This works well for variables that contain small amounts of data. String, boolean and integer values are typically small and do not require much consideration. Array and object values may contain a lot more data as FirePHP traverses them (all array elements and object members) until the complete or maximum depth is reached. This is also true when logging exceptions and traces where all function and method arguments are also traversed. The data volume can quickly grow to megabytes which has fatal consequences for transmission of the debug data to the client and the client being able to render it.

FirePHP includes some solutions to these problem that you can take advantage of.

Continue reading »

August 24, 2010

I have introduced FirePHP Companion and you say it looks like a cool tool, but what can you actually do with it that is going to help you? This is the first post that looks at practical applications.

To start with I thought I would rework the example I included in my php|architect article. You will see how much easier it now is to accomplish the same, and with much less code, using FirePHP Companion instead of the existing FirePHP extension.

The Task

Let’s say you want to display an RSS feed on your site. You know that you should cache the feed on your server and only fetch updates from the origin server on a periodic basis. You know this because things get real slow if you don’t do that and you may get blocked from accessing the feed altogether if you call it with every request.

Knowing you need to build some caching logic it would be nice to have a tool that can help you see what is going on when you make a request to your script. You may want to know where your cache file is on disk, how stale it is, if the feed was re-fetched and the cache was updated and so on. This is exactly where FirePHP Companion comes in.

Continue reading »

August 20, 2010

When I originally wrote FirePHP in 2007 I had big ambitions as to the features I was going to incorporate. I learned quickly that the kinds of things I wanted to do were not going to be easy to implement in a maintainable way using existing code I had and open source code I could find. What I needed was a wholistic approach to the problem area of server-side application intelligence and a set of libraries based on standards that could be applied cross language.

After countless hours of research and development I am pleased to announce the first fruit of my labor.

Continue reading »

August 17, 2010

It has been a while since my last post. I did not intend to have such a long hiatus from blogging but with limited time, what can you do. I have started to post on twitter and will be using twitter for small bits of cool or informational stuff I come across or produce.

My last post Integrating FirePHP for Ajax Development kind of paints a picture for what I have been up to:

I have never been a real fan of interactive debuggers, primarily because they don’t support my write a little code, run it, write some more, re-run it  development approach, which seems to be quite common when building Web applications with scripting languages. As FirePHP is coming into its own and I can observe how others use it, I see tremendous opportunity in evolving this type of development approach further. I’m not talking here about just the debugging aspect, but rather a system that can easily be tied into any application to provide the developer with a powerful user interface that can visualize the internals of an application. One that allows the developer to configure components for different environments and stages of the development cycle.

Continue reading »

April 3, 2009

UPDATE: Oct 20, 2010

Since writing this article I have been working on FirePHP 1.0 and a new client tool to achieve the kinds of things I describe below much more easily. The new tool is called FirePHP Companion and aimed at streamlining the PHP development workflow. There is still a lot of work left to do, but you can already take a look at how the demo provided here can be implemented easily with FirePHP Companion.

As mentioned in a previous post I wrote a column for php|architect about how FirePHP can be used for Ajax development. I am re-publishing the complete article here. Enjoy!

FirePHP for Ajax Development

There are many integrated development environments and tools available to aid in building Web 2.0 AJAX applications with PHP, but nothing comes close to the ease of use and tight Firebug integration that FirePHP provides.
PHP: 5.2+
Other software: Firefox, Firebug
Useful/Related links:

My purpose in this column is to introduce you to FirePHP, the problem it solves, and how it is intended to work within your application for maximum benefit. I will present some useful high-level knowledge to make it easier for you to integrate FirePHP into your application.

This is not a step-by-step tutorial. I have made a complete demo available for download, along with some useful libraries illustrating all the concepts covered here. I want to emphasize that the demo is only one possible implementation. There are many other possibilities.

Continue reading »