php5-sqlite3
Ryan Schmidt
ryandesign at macports.org
Thu Jan 29 13:31:41 PST 2009
On Jan 28, 2009, at 22:58, M. Brooks Clark wrote:
> Are there any tricks to getting sqlite3 support with php? I've
> installed php5 +sqlite and php5-sqlite3, but when I try to access a
> page, I get the following error:
>
> Fatal error: Call to undefined function sqlite3_open() in /Users...
>
> phpinfo() gives me the following:
>
> SQLite
> SQLite supportenabled
> PECL Module version2.0-dev $Id: sqlite.c,v 1.166.2.13.2.11
> 2008/12/01 12:28:27 felipe Exp $
> SQLite Library2.8.17
> SQLite EncodingUTF-8
>
> DirectiveLocal ValueMaster Value
> sqlite.assoc_case00
>
> sqlite3
> SQLite3 supportenabled
> SQLite3 module version0.6
> SQLite Library3.5.9
>
>
> I'm at a loss. Any suggestions would be appreciated.
Ok, I don't use SQLite in PHP or elsewhere, but I just spent a lot of
time researching the available SQLite interfaces in PHP, so pardon me
if some of the below is already self-explanatory to you; it wasn't to
me and I want to write it out to make sure I got it right.
PHP offers two built-in interfaces for accessing SQLite databases: a
procedural API and an object-oriented interface using PDO (PHP Data
Objects). If you install the php5 port with the +sqlite3 variant, you
get both of them. The procedural API is documented here and includes
such functions as sqlite_open():
http://php.net/sqlite
The PDO interface is documented here and involves you using a PDO
object:
http://php.net/pdo-sqlite
The catch is that the procedural API is only for SQLite 2 databases.
The only built-in interface for using SQLite 3 databases is via PDO.
There is also a PECL extension, php-sqlite3, which was developed
during 2008, currently at version 0.6. This is what the php5-sqlite3
port installs. But it does not provide the sqlite3_open function you
are seeking. Rather, it gives you an object-oriented interface based
around three classes: SQLite3, SQLite3Stmt and SQLite3Result. It is
described here, rather incompletely, notably the installation
instructions are totally missing:
http://php.net/sqlite3
There is also the PECL page about the extension, but it doesn't have
any documentation at all:
http://pecl.php.net/package/sqlite3
As far as I can tell, to use it, you add the line "extension =
sqlite3.so" to your php.ini.
I finally found the sqlite3_open function you're trying to use in
another extension which is also called php-sqlite3. This one was
developed from 2005 to 2007 and is currently at version 0.5:
http://php-sqlite3.sourceforge.net/
We don't have a MacPorts port for this extension.
So after all that, if this is a web app you are making, then I
suggest you use the built-in PDO SQLite3 interface since it is well-
supported and doesn't require installing an extension. If this is
someone else's web app and you're not in a position to rewrite it to
use PDO SQLite3 and you can't convince its developer to do so, then
you'll have to either write a port for this earlier php-sqlite3
extension (though I'm not sure what we would call the port) or
install it manually.
More information about the macports-users
mailing list