Mon

18

Feb '08

Compiling & installing Xdebug for PHP 5.2.5 (Entropy.ch build) on OS X 10.5

Following on from my previous post detailing Installing Xdebug for PHP (Entropy.ch build) on OS X, this post deals with compiling and installing xdebug 2.0.2 for PHP Version 5.2.5 (www.entropy.ch Release 6) on OS X 10.5.2 Mac Pro 64-bit (2 x Quad-Core Intel Xeon).

The instructions below are a composite of those in the Xdebug README and the user ‘pilif/Philip’ on the entropy forums who posted the CFLAGS settings used to compile Xdebug for x86 64bit architecture (see the post here – thanks Philip!)

The standard release of Marc Liyanage’s PHP Apache Module may not work under OS X 10.5, depending on the architecture of the processor – you will know if you get the error message “The following install step failed: run postflight script for Entropy PHP. Contact the software… “.

Marc has been hard at work compiling an updated 4-way binary and trying to get all the dependencies and packages working – the latest version which I am using (works fine) and which this tutorial is based on is Leopard: PHP 5.2.5 Release 6 BETA

The binary distribution of Xdebug from Activestate which I was using previously won’t work with this version of PHP (I believe I am right in saying it will only work on a 32bit architecture but I may be well wrong) so it needs to be complied from source – luckily it’s pretty easy to do!

First off we need to make sure PHP 5.2.5 from the Entropy site is installed and working, and that the install directory is /usr/local/php5/

Next we need to make sure it is using a php.ini file (probably located at /usr/local/php5/lib/php.ini – if not make a copy of the ‘php.ini-recommended’ file and rename it ‘php.ini’).

We need to make sure that errors are set to be displayed in the ini file (display_errors = On and error_reporting = E_ALL).

The OS X developer tools must be installed (either from the Leopard install disk or the disks which came with the computer).

  1. Run a phpinfo() page up on the local web server and find the ‘extension_dir’ entry (in the Configuration -> PHP Core section) – copy that value down (it will be something like /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/)
  2. Download the source code from http://xdebug.org/
  3. In the terminal, cd into the directory which the source code tar file is in
  4. Unpack the tarball: tar -xzf xdebug-2.0.2.tgz
  5. cd into the unpacked directory: cd xdebug-2.0.2
  6. Run phpize (using the phpize installed with the Entropy distribution, not the one installed by OSX): /usr/local/php5/bin/phpize
  7. Configure: CFLAGS='-arch x86_64' ./configure --enable-xdebug
  8. Run make: make
  9. Copy the compiled module to the directory you determined in step 1 (replacing the directory shown here with your one if it is differant): cp modules/xdebug.so /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/

Open your php.ini file (for the Entropy version it is at /usr/local/php5/lib/php.ini) and add the following:

[xdebug]
zend_extension=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so

(obviously substitute your extensions directory path from stage 1 if it isn’t the same as mine)

  1. Restart the web server
  2. Reload the phpinfo() page and look for the ‘Xdebug’ section – if all is working it should show up along with a whole bunch of directives

4 Comments

gravatar#1 ronan

Thanks for putting up these instructions. It’s nice to finally have my debugger back.

It looks like you missed a step though. After step 7 you need to actually run ‘make’. This is fairly obvious from the instruction, but actually spelling out the command would be useful for a lot of people.

Thank again.

posted by ronan, Mar 8, 07:56 PM

gravatar#2 otto

Hi there, thanks for the nice guide.
But I tried this and recieved the same message as before, failed loading (null). Can you please put up a binary of the xdebug.so file?

posted by otto, Mar 15, 02:54 PM

gravatar#3 otto

Oops, I was a bit quick on the trigger there. Figured it out two seconds later.

posted by otto, Mar 15, 03:57 PM

gravatar#4 James

@ronan – you are quite right – that wasn’t clear! I have added a ‘make’ step which should hopefully be clearer – thanks for the catch.

@otto – was it the missing step which Ronan pointed out which caught you or was it something else? Is there anything I can do to make the instructions clearer?

posted by James, Mar 15, 08:08 PM

Leave your comment

Please keep all comments and opinions polite and on topic. Consider signing up for a Gravatar (Globally Recognized Avatar) to make the web a more personable place. Your email address is required to post, but it won't be displayed to anyone else.

your comment