I just spent the last 3 hours trying to figure out how come, after upgrading the PHP version on my web server, two websites were broken.
In particular, these two were done using my colleague’s new framework — which is pretty good — but they just wouldn’t work.
Apache2 would prompt to download the .php file, and when I saved it, it was blank. Great. In the 2nd website, the page would be blank instead.
Now, I’m not really very cool about upgrading PHP, in fact I’d much rather get my sysadmin to do it, but tonight called for urgency. Yeah. So it was up to me.
So i used almost the same ./configure parameters except I wanted the imap_* functions:
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql \ --with-curl --disable-debug --enable-ftp --enable-inline-optimization \ --enable-magic-quotes --enable-mbstring --enable-mm=shared \ --enable-safe-mode --enable-track-vars --enable-trans-sid \ --enable-wddx=shared --enable-xml --with-dom --with-gettext \ --with-regex=system --with-xml --with-zlib-dir=/usr/lib \ --with-zlib-dir --with-ttf --with-freetype-dir=/usr/local/include/freetype2 \ --with-imap-ssl=/usr/local/imap2006e/ # make # make install
All went fine of course. I tried with different options, with-apxs2, with-mysql and with-imap. Didn’t work as well. Then I sought Google:
“php script downloaded instead of rendered”
Nothing much actually. Maybe it was the search keywords. There was a post on the WordPress forum about Apache, okie so I decided to upgrade Apache as well. Risky, but it was late, so what the heck. Pissed off already. After compiling the new Apache 2.0.x version, I recompiled PHP. Nope, didn’t work.
So I figured I’d to trace the PHP script, comment/uncomment until I came to this one line:
Ahhah! Later I went into the Apache2 logs and lo and behold, there was a segfault error message which I had blithely not thought to read. Yeah. This bug is resolved in CVS, but I’m really pissed now, so I reverted to v4.4.4, and it worked like a charm.