After updating PHP to version 5.4 (with mixed success), I am still cleaning up the fallout peu à peu. (See all entries of this mini-series here) During my holidays, the fact that my Roundcube installation is also broken bit me (I needed quick access to my flight information and the e-mail was not cached on my iPhone). Today, I tried to fix it.
I was using Roundcube 0.8-beta with the SQLite backend, and it seemed the database was no longer accessible. SQLite is a bit picky with its permissions, so I checked that first, but the server log said:
[Wed Aug 08 19:06:33 2012] [error] MDB2 Error: not found (-4): [Error message: extension sqlite is not compiled into PHP]\n
Whoopsydaisies, is there an extension missing? I duly checked my PHP for SQLite support and sure enough, the sqlite3 extension was loaded. But alas, Roundcube uses the outdated sqlite2 API, so it fails. I tried updating to Roundcube 0.8.0, but to no avail. After a while of googling, I found a bug in the Debian tracker that essentially said “Roundcube’s fault for using outdated code” and led to a bug in the Roundcube bug tracker (#1488332). This one was marked as fixed 6 days ago (August 08th), so I downloaded the latest nightly, marked 20120812. This nightly did not fix the issue, either.
So either there’s currently no way to use Roundcube with SQLite and PHP 5.4 or I have missed something. Does anyone have a hint for me?
(PS: The current nightly has an awesome new UI, so the update wasn’t for naught. And I have switched to MySQL for the time being.)
“After updating PHP to version 5.4 (with mixed success), I am still cleaning up the fallout peu à peu”
One word: Linux. The oh-so-supercool-everything-works-perfectly Linux. I really started to hate Linux and it’s computer-nerd-like structure/behaviour/support more and more by the years. It’s time for something better.
What does anything have to do with linux? sqlite (version 2) support was removed from php 5.4 after it was deprecated for several years, and sqlite3 support had been around for about as long.
Still, the roundcube people failed to integrate sqlite3 in time, probably partly because it is a volunteer project and nobody relied on it (or was getting paid to do it). If anything, this is roundcube’s fault. But then again, you shouldn’t upgrade a production system without testing that it works beforehand. Had support for sqlite3 been available in roundcube back when I first installed it (the php module was already available back then), I would have used that instead. It wasn’t, so I didn’t. When first upgrading to 5.4 I had to bite the bullet and use MySQL instead, because that’s something that roundcube wouldn’t dare breaking.
Long story short, please stop spreading bullshit about linux.
It’s the old “sqlite” extension, i.e. ext/sqlite. That one is no longer bundled or available with Debian PHP. The linked bug report states that sqlite2 dependant code has been removed from the codebase.