PHP-GTK2 Beta on Windows

In case you haven't noticed from the glut of other blogs announcing it - PHP-GTK2 beta has been released. A lot has been accomplished from the alpha in terms of fixed bugs, features, and other fun stuff. I've been self-volunteered to do the windows builds. Should be unzip and run on any windows above 95/98, but even PHP support is flakey on there. If you really need an earlier build send me an email with what you want (thread safe? not thread safe? php version? Against the 2.6.9 gtk libraries? Additional php/pecl extensions?) And I'll do a win 95/98 special build.

The rest of this post gets all technical, so if you just want to see what php-gtk2 can do, download it and give it a shot, it's a lot of fun to work with...for the rest of you who don't get glassy eyed when I mention compile and MSVC in the same sentence...

I still have a "hit list" of things to be finished. These are things I'd personally like to see happen and will work on, I have other "wish list" things that I'm not going to do more than kick other people about (docs come to's more fun to play with C than docxml)

  1. Finish windows build issues. - I still have some MSVC 2003/5 fixes to get in, as well as getting PHP-GTK2 extensions building both shared and static on win and linux (some of us are nuts and there's currently a *nix shared build issue...) - absolute dream? Figure out how to integrate PHP-GTK into the PHP build system so I can do it all in one run (and built it statically into php.exe if I'm nuts enough).
  2. Fix the gd issue - right now GdkPixbuf::new_from_gd requires gd built in statically. I believe I have a fix to make it work with static and shared gd (patch is sitting on the mailing list) but I have to mangle the build system for windows a bit as well. Andrei mentioned that he'd like to simply have the function work if gd is available. Can you do this with PHP? Conditionally check at runtime if another module is loaded, and use it if it is? If so that would be fabulous. I'm envisioning a new_from_imagemagick and new_from_freeimage as well...(internals gurus please stand up)
  3. Do something about Cairo - GTK 2.8+ integrates pretty tightly with Cairo and it would be great to have a Cairo extension to mesh into gtk. But there's nothing from Pierre about the OO Cairo extension he was planning/working on/abandoned?? and the Cairo wrapper in pecl requires some major hacking just to get building (although I have done it) and is not OO in any way. I've found another Cairo extension that shows a lot of promise, but then we're back to can it get into php at all with Pierre's promised work and the existing Cairo wrapper? So the question becomes - would a php-gtk cairo extension work? Hmmm, there's a theory, we could use the C code generation system...any ideas welcome
  4. Finish code completion - there's still a long way to go especially in things like pango and atk. I kind of shot the percentages by adding in the 2.8/2.10/3 million extra extensions support...
  5. Additional extensions - big one for me is libegg (I want the customizable toolbar soooo bad), although there's been talk of opengl, canvas and some other, libegg is the only one I really want yet for my projects. Would be nice to get some kind of mozembed working on windows - however the gtkmozembed widget on windows is a steaming pile of junk and it's completely broken in HEAD anyway - I'm not impressed by the new maintainer.
  6. Bug Andrei about the custom signals and custom cellrenderers support - and figure out how to create your own gobjects and gtkwidgets - these are all more "internals" related so it's not like I can just hack them into being. However I've found that being the squeaky wheel does work (the "my project works properly" factor outweighs the "people are mad at me" factor)
  7. Visual Studio projects for the entire GTK dependency chain - new builds of everything (in new versions) from iconv and gettext to gstreamer pixbuf loader - this will take me an eternity I'm sure. It's been suggested I try to use wez's build system for this but I'm not sure it's any better/faster in the end, since I'm only building these libraries one way (to match the mingw builds from

That's about it for me. That should be enough to keep me busy for a LOOONG time.



Regarding Cairo extension. I stopped working on it after I realized there was little if any demand for it.
I hate working on stuff that will never be usfull. Do you think I should continue my work on it?


2007-06-23 1:57 pm



PHP-GTK 2 is very beautiful!

But, i have tried to load xdebug(binary for win) but it does not work! I have tried to use last PECL extensions from :

but they does not work!

Why php-gtk 2 binary have been compiled Non-Thread-safe?

I think that this is a problem.


2007-07-27 9:43 am


You can get non-thread safe PECL extensions from the php downloads page - - select the PECL 5.2.3 Non-thread-safe Win32 binaries - xdebug is in there

The reason for doing the non-thread-safe version is simple, speed. It's a 30% increase, and the CLI SAPI (which is what php-gtk2 uses) is non-threaded, so what's the point of compiling a threaded version?

In additional, all available PECL extensions to match the php binary distributed with php-gtk are available on the php-gtk downloads site as well. (Appears to be down at the moment though...)

2007-07-27 11:10 am



Thanks for the answer.

I understand.

The only problem is XDebug!


2007-07-27 12:21 pm


hi, the xdebug non thread safe version is not in the the download yo told wrote.

can you send me a non-thread safe version of xdebug ?



2008-11-28 1:12 am

Post a Reply