An xmlrpc connector for Mantis

It just felt soo long since I had last hacked on anything xmlrpc-related, and some part of me was looking for an itch to scratch.
Luckily today a request for help via email set me on a hunt for blog posts / forum posts / mailing list messages where complete newbies ask questions about the phpxmlrpc lib not working for them. Of course they post there instead of the correct mailing list because in fact they have trouble setting up their favourite php application. Heck, they probably do not even know what phpxmlrpc is.
To make a long story short, I ended up looking at the code of a poorly-written dotproject xmlrpc plugin, and wondering why the mantis bugtracker has such a nice and clean soap interface but has no xmlrpc one.
And since it was late evening – the best time to code, when there are no distractions coming in over the phone or chat or email – and home alone, I just sat in the front of the keyboard decided to put and end to that last shameful situation.

For everybody who needs it ot just wants to test it, here it is: the Mantisconnect XMLRPC Interface, rev. 0.1

The completely unofficial Xdebug.ini

There are just a couple of minor annoyances with the Xdebug PHP debugger really, the first one being the absence of a proper documentation package to be downloaded and read offline.

I find well-commented ini files, in the Apache httpd.conf style, the best complement to user manuals and technical references: when you are editing the forgotten config of that vetust server that has no web access or even ssh whatsoever, awkwardly sitting on an unstable pile of extinguished hardware in the darkest corner of the server room, they will save you dozens of round trips to go googling for information.

Unfortunately the Xdebug distribution contains no such thing: no comments, no list of ini directives, no ini file at all. But since I am a nice chap, after having carved out such precious jewel, I thought it might be of interest to the community, and without further ado here it is:

Continue reading The completely unofficial Xdebug.ini

Microsoft loves PHP, at long last! (or does it?)

As lots of other coders in the PHP blogosphere, I am rejoicing for the release of the final version of the FastCGI extension from Microsoft that promises to bring enormous gains in terms of speed and stability when running PHP with IIS.

Unfortunately, when you look at the minimum requirements, you will see that only Windows 2003 server is supported. No playing around with your XP laptop or those old windows 2000 boxes that still occupy a huge chunk of the server room. My guess is that with a little tweaking you might make it work on other platforms (as you can get IIS installed on Xp home), but then support from MS would be less than forthcoming…

Another great piece of technology to make PHP usable in the MS ecosystem is an improved driver to connect to SQL Server: the standard php driver is known for not being 100% stable, with the syndrome I have most frequently seen on live servers being connections sometimes being dropped/connection attempts aborted.
The beta (tcp) version is also available from MS since October. Or at least it should: I have been trying unsuccessfully to download it for a couple of days, and always end up on a broken download server.

The platform support here is broader, starting with windows 200 sp4. Unfortunately, this extension needs the the Microsoft SQL Server Native Client to work, which is not available on any non-ms platform. The most common php platform (linux+apache+php) will thus reap no benefits from this improved driver – the source being of course closed.

All in all, some steps are being taken in the right direction. Let’s just hope than more will be in the future.

I’m Easy! (mangia come parli)

I’m excited, happy and proud to start my new job, based in Paris, as an employee of eZ Systems France.
Besides making a great product, the company truly believes in the open source model, and it is even making some money (enough at least to pay my rent!). What else could a php coder ask for?

I am eager to meet my colleagues über hacker Derick Rethans and Tobias Schlitt, whom I first met at the Italian php day last year, and of course the complete staff of the Lyon office, a bunch of young and talented geeks that will surely put my skills to shame.

eZ logo

Btw, for those lazy people that don’t speak italian, the title loosely means “put your money where your mouth is”

Running multiple php versions on a single Apache install

This is a very strange topic: even though a cursory google search using the words “multiple php versions apache” spits out a considerable amount of informative howtos and blog entries, when I recently mentioned in a mailing list that it is in fact quite easy to have multiple php installs running in parallel using Apache virtual hosts, I immediately received a private request for my configuration.
Well, here it is, along with a few details on how to set up the complete environment.

The desired goal is having “alot” of php installations running in parallel, so that php scripts can be quickly tested against as many versions of php as possible. It is very useful f.e. when

  • you are migrating an existing app from php 4 to version 5
  • you are deploying your applications on a large base of servers where different versions of php are installed, but develop all the different apps on the same workstation
  • you develop a popular open source php library or shrink wrapped application, and want to make sure that it runs smoothly in every possible user setup
  • you want to test an application against different sets of php.ini configurations, to check for possible problems in areas such as output buffering, opcode caches etc…
  • you are into integration testing

There are many different setups that can be used to achieve this result (a big list is available on Gentoo docs, courtesy of Andreas Korthaus).
My preferred setup is: use a single apache instance, with a single php version installed as module, and many versions installed as cgi applications. Advantages:

  • no need to rename any php file to run it with different php versions
  • no need to restart the webserver or run any kind of script to switch php version
  • uses less memory than multiple apache installs

The main disadvantages are:

  • only 1 php version can run as an apache module, the others must limit themselves to cgi
  • a very misbehaved php application can in rare cases hog or crash the webserver, and it will have to be reset before testing with other php versions

The instructions below are geared to a windows environment with Apache 2, but converting them to linux is left as trivial exercise for the sysadmin.

Continue reading Running multiple php versions on a single Apache install