I am trying to use sqlite from PHP. I have the following simple code:

<?php
$db = new SQLiteDatabase("test2.sdb");
unset($db);
?>

As the result of this code (which I execute in the command line "php test2.php") I get:

Fatal error: Class 'SQLiteDatabase' not found in /var/www/test2.php on line 3

Does anybody know how can I make PHP able to use sqlite?

P.S. Here I found out that "SQLite support is enabled by default on a standard Linux PHP compilation starting with PHP 5.0." And I have "PHP Version => 5.2.6-2ubuntu4.6". So, sqlite should be enabled unless the "--disable-sqlite". In my case output of "phpinfo();" does not contain "sqlite" at all.

link|improve this question

72% accept rate
feedback

5 Answers

up vote 2 down vote accepted

There's quite a few reports of the same issue out on Google but no definitive solution.

Double-check your SQLlite extension is enabled in PHP, and you should be able to use the sqlite_* family of functions (such as sqlite_open) instead of the OOP approach, not ideal I know.

Also just check that your PECL module for sqlite is >= 1.0.0.

link|improve this answer
How exactly do I check if my SQLite extension is enabled in PHP? I also tried to use "sqlite_open" as the result I got: Fatal error: Call to undefined function sqlite_open() – Roman Feb 28 '10 at 11:04
Mock up a simple PHP script with <?php phpinfo(); ?> then view that page in your browser - it should have a section for sqlite if it's supported. Have you got the php5-sqlite package installed? If not, install it. If you have, check if you have a extension=sqlite.so (or something similar) line in your php.ini. – Andy Shellam Feb 28 '10 at 11:46
I have installed php5-sqlite and problem was resolved. Thank you! – Roman Feb 28 '10 at 14:58
feedback

I had the same problem and I had forgotten to uncomment extension=php_pdo_sqlite.dll

AND

extension=php_sqlite.dll

link|improve this answer
feedback

I had a similar problem, and when trying to install sqlite using "yum install sqlite.i386" it said it was installed and up to date, however for some reason there was nothing in my php.ini about it and it wasn't working even though phpinfo was reporting "with sqlite=shared" etc.

Adding "extension=sqlite.so" somewhere in the php.ini made it work, I put mine under the PDO section near the bottom but I doubt it matters where you put it really.

Oh and make sure you restart apache before checking it, or just reboot the box! :)

link|improve this answer
feedback

I had the same problem.

If you upgraded your php version, some of old configuration files may be referencing a non existent file.

Look at the ".ini" files at "conf.d" directory. In my case the path of my "conf.d" directory is "/etc/php5/conf.d" in a Debian system.

Talking specifically about "SQLiteDatabase" class, my problem was the "sqlite.ini" file pointing to "sqlite.so" which does not exist.

After deleting the "sqlite.ini" file, make sure that there are a ini file pointing to a valid sqlite extension (in this case the "sqlite3.ini" pointing to "sqlite3.so") and restart the apache all worked fine for me.

Hope it helps.

link|improve this answer
feedback

Check your php.ini (for instance on windows) :

extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.