Saturday, April 28. 2007
For some time now I wanted to rewrite the snapshot generation script. I wanted to do this to add some features that people were asking for.
Up till now we provided only the debug pack for the latest snap but several people have asked if it was possible to make one available for each snap that was provided on the site. The PECL bundle and the installer were not provided at all (althoug pecl4win site provides a build of PECL extensions).
John Mertic helped out with the installer script that allows the build even when some components fail to compile. This still isn't foolproof due to some not-so-reliable behavior of the DOM extension which is used to generate the input files for the WIX installer.
The latest files for the current 5.2 branch can be downloaded from the snaps site:
PHP ZIP distribution
PECL extension pack
Debug pack
PHP installer
Now we will have all those four available for each build so we need some way to represent them on the downloads page. Four icons for each build? If you have a suggestion how to make this look nice at snaps.php.net please let me know.
If you're curious, the windows snapshots are generated by a bash script that calls the windows build (which is written in javascript). Then it generates uses the newly built PHP to generate XML files that are used by WIX to create the installer.
Monday, April 23. 2007
I was installing a new mail server and I was sticking with my usual suspects. I usually use Postfix for handling SMTP and Cyrus for IMAP and POP3 access. No surprises there.
But then the people you install a mail server for usually want you to make their mail accessible via some web interface. There, the situation is not so clear in my mind. There are several options to pick from. There is SquirerelMail, a very easy to install program with many plugins and options available. But its functionality can be seen as limited and it has some performance issues on very huge IMAP mailboxes.
On the other hand we have IMP, part of the Horde project. This is a fully featured webmail program that performs really well. The problem with IMP and Horde was that it was really difficult to install and configure. But now we the good people of the Horde project has provided us with a solution.
Horde Groupware Webmail Edition is a package where in one download you get all the pieces that make a good webmail applications. You get extra goodies like shared calendar, address book, notes, etc. The latest release also supports the integration with the Kolab Server.
The best thing of all: the nightmare of installing Horde and all its applications is over! Now you unpack the tarball, run a setup script and your groupware webmail application is up and running in under two minutes. The sheer wealth of functionality that this install provides is a real joy.
Nothing else to say but to congratulate the Horde developers for such a great application. Highly recommended.
Thursday, April 19. 2007
I have been moving some of my sites around and the turn came to my blog. Since I have decided to try lighttpd on my new server I was wondering how easy would it be to setup Serendipity on it.
Well the basic install went pretty smoothly, but I wanted, of course, to use "friendly" URLs. For that Serendipity supplies .htaccess file with Apache mod_rewrite rules. With a little bit of effort it was possible for me to convert those into rewrite rules that lighttpd would understand:
# Serendipidy rewrites
url.rewrite-once = (
"(archives/([0-9]+)-[0-9a-zA-Z\._!;,\+\-]+\.html)" => "index.php?/$1",
"(authors/([0-9]+)-[0-9a-zA-Z\._!;,\+\-]+)" => "index.php?/$1",
"(feeds/categories/([0-9;]+)-[0-9a-zA-Z\._!;,\+\-]+\.rss)" => "index.php?/$1",
"(feeds/authors/([0-9]+)-[0-9a-zA-Z\._!;,\+\-]+\.rss)" => "index.php?/$1",
"(categories/([0-9;]+)-[0-9a-zA-Z\._!;,\+\-]+)" => "index.php?/$1",
"archives/([/A-Za-z0-9-]+)\.html" => "index.php?url=/archives/$1.html",
"([0-9]+)[\-][0-9a-zA-Z\-]*\.html" => "index.php?url=$1-article.html",
"feeds/(.*)" => "index.php?url=/feeds/$1",
"unsubscribe/(.*)/([0-9]+)" => "index.php?url=/unsubscribe/$1/$2",
"approve/(.*)/(.*)/([0-9]+)" => "index.php?url=approve/$1/$2/$3",
"delete/(.*)/(.*)/([0-9]+)" => "index.php?url=delete/$1/$2/$3",
"(admin|entries)/(.+)?" => "index.php?url=$1/$2",
"admin$" => "index.php?url=/admin",
"archive/?" => "index.php?url=/archive",
"(index|atom[0-9]*|rss|b2rss|b2rdf).(rss|rdf|rss2|xml)" => "rss.php?file=$1&ext=$2",
"(plugin|plugin)/(.*)" => "index.php?url=$1/$2",
"search/(.*)" => "index.php?url=/search/$1",
"(serendipity\.css|serendipity_admin\.css)" => "index.php?url=/$1",
"index\.(html?|php.+)" => "index.php?url=index.html",
"htmlarea/(.*)" => "htmlarea/$1",
"(.*\.html?)" => "index.php?url=/$1"
)
We only need to prevent some files from being sent to the user:
url.access-deny = ( ".tpl.php", ".tpl", ".sql", ".inc.php")
I guess the future will show how many security holes I have opened playing with these regexs
Saturday, March 17. 2007
 During my time at Emini I was using an old beat up machine to build PHP snapshots for Windows. It was only a Pentium II 400MHz and compiling a PHP snapshot on that machine took more than an hour. After leaving Emini I needed to find a new box for compiling PHP snapshots and PECL extensions for the Windows platform.
Continue reading "New Windows Snaps/Release Builder"
Saturday, March 10. 2007
 Ilia has noticed that MySQL have released a new version. I have compiled 5.0.36 libs mysqlf since that release didn't include pre-built windows binaries. I thought it would be the best if we bundled "original" MySQL DLLs so here is the PHP 4.4.6 binary compiled against 5.0.37 MySQL libraries. Upcoming versions of PHP5 are going to include this version of MySQL client library as well.
Download: php-4.4.6-w-mysql-5.0.37.zip
The archive contains two files. Both of these files should be dropped in your existing php-4.4.6 install folder overwritting php4ts.dll and adding libmysql.dll.
Friday, March 9. 2007
PHP 4.4.6 was released to fix a serious problem in the session module. Here, you can download the Windows build with updated MySQL libs.
Download: php-4.4.6-w-mysql-5.0.36.zip
The archive contains two files. Both of these files should be dropped in your existing php-4.4.6 install folder overwritting php4ts.dll and adding libmysql.dll.
Friday, February 23. 2007
 I have known that I would be leaving Emini, company that I have founded with two partners in 2003, for a couple of months now but I was hesitant about writing about it. I hesitated because I don’t really want to go into details and explain the reasons.
I was working with the same people since 1999. It all started out as a college project to prove that “alternative” technologies could be used for powering an “ecommerce” application. The company that allowed us to use their resources and play with their technologies was Proventum and the “alternative” technology was PHP that was just going into beta testing of their new and upcoming version 4.
Continue reading "Leaving Emini"
Monday, February 19. 2007
PHP 4.4.5 is released and so is the version with updated MySQL libs.
Download: php-4.4.5-w-mysql-5.0.22.zip
The archive contains two files. Both of these files should be dropped in your existing php-4.4.5 install folder overwritting php4ts.dll and adding libmysql.dll.
Sunday, January 7. 2007
We are back to using VC6 compiler for the official PHP Windows build. VC8 (Visual Studio 2005) was causing trouble with loading the new C runtime. You can read about the details of the problems encoutered in this thread. So I had to make yet another build, this time using good old VC6.
Continue reading "Back to VC6 for PHP Windows build"
Friday, January 5. 2007
I have made a build of 5.2.1RC2 for Windows with no thread safety enabled. This will only work for non threaded SAPIs such as CGI/FastCGI and CLI. The reason for this is that managing per thread state takes some CPU time from the main task of running PHP scripts making non thread safe PHP significantly faster. My initial benchmarks show 20-30% performance increase.
This, together with the new FastCGI implementation for IIS from Microsoft should bring PHP performance on Windows to a new level.
php-5.2.1RC2-nts-Win32.zip
(76aa90a7fdb0bd2eb62c1172501d6c6e)
pecl-5.2.1RC2-nts-Win32.zip
(a493bdf794a5d44d749f6dcd2a55f9da)
php-debug-pack-5.2.1RC2-nts-Win32.zip
(cbfd474fcdb61522d4c750b5c02d3df9)
Derick made the PHP-4.4.5RC1 available for download. Hot on its heels comes the Windows build:
php-4.4.5RC1-Win32.zip
(def20de760f4eca337ffddbc264441ef)
Tuesday, December 19. 2006
Here is the comparison of running Zend/bench.php from the PHP source using VC++ 8.0 (Visual Studio 2005) and VC++ 6.0. The test was done on my Lenovo laptop with Celron M 1.6 GHz processor and 1.5 GB ram.
| Test | VC8 | VC6 | % | | simple | 0,444 | 0,490 | 9% | | simplecall | 0,650 | 0,738 | 12% | | simpleucall | 1,220 | 1,235 | 1% | | simpleudcall | 1,634 | 1,591 | -3% | | mandel | 1,390 | 1,519 | 8% | | mandel2 | 1,712 | 1,909 | 10% | | ackermann(7) | 1,637 | 1,844 | 11% | | ary(50000) | 0,069 | 0,075 | 8% | | ary2(50000) | 0,061 | 0,061 | 0% | | ary3(2000) | 0,808 | 0,876 | 8% | | fibo(30) | 5,383 | 4,970 | -8% | | hash1(50000) | 0,133 | 0,147 | 10% | | hash2(500) | 0,118 | 0,130 | 9% | | heapsort(20000) | 0,462 | 0,454 | -2% | | matrix(20) | 0,373 | 0,375 | 1% | | nestedloop(12) | 0,789 | 0,855 | 8% | | sieve(30) | 0,350 | 0,390 | 10% | | strcat(200000) | 0,127 | 0,140 | 9% | | Total | 17,362 | 17,800 | 2% |
Monday, December 18. 2006
Well the first build proved to be somewhat less that a full success. It worked only on one computer: the one that was build on. Since this limits PHP use on the Windows platform I went ahead and read about Microsoft manifest files, SxS (side by side) assemblies and other wonderful stuff that Microsoft has provided for us in version 2005 of their development package.
You should be able to use this package without installing any packages from Microsoft. Normally a VC++ redistributable would be required. Helpful information for those that are wrestling with similar problem is described in MSDN article Deploy using XCopy.
You can download this build from:
php-5.2.1RC2-dev-Win32.zip
pecl-5.2.1RC2-dev-Win32.zip
I have just completed the first build of the current php-5.2 CVS using the new compiler from Microsoft. The file is avaliable at php-5.2.1RC2-dev-Win32.zip.
Since this is the first build using the new tool set any help in testing it would be greatly appreciated.
UPDATE: Thanks for the feedback. It seems that the binary does not work without the .manifest files being built in into the executables. I'm investigating how to do this with the new compiler.
|