Tuesday 6 January 2015

How to get SQLite3 working in PHP 5.4, 5.5 and up - on Windows

1) Check to see if PHP believes you have SQLite3 installed and working

Create this PHP script (I created it as sqlSandbox.php in the top-level of my web-server's web root directory)

<?php
// Give yourself all the debugging info you can
error_reporting(E_ALL | E_STRICT);

ini_set('display_errors', TRUE);

// What version of PHP is running?
echo "phpversion " . phpversion();

echo "<br>";

// Everything and the Kitchen sink
phpinfo();
?>

Things to check on this page:
A) Top section
Loaded Configuration FileM:\php-5.5.10\php.ini
This shows you which php.ini file is the one to alter.
B) In the PDO section
You should see
PDO supportenabled
PDO driverssqlite

C) There should be a pdo_sqlite section.
PDO Driver for SQLite 3.xenabled
SQLite Library3.7.7.1

D) There should be a sqlite3 section
SQLite3 supportenabled
SQLite3 module version0.7-dev
SQLite Library3.7.7.1

DirectiveLocal ValueMaster Value
sqlite3.extension_dirM:\sqlite3M:\sqlite3


2) Note that any function in the PHP manual beginning "sqlite_"  refers to sqlite2 and below, and that only references beginning with SQLite3 work with SQLite3.

3) Make sure you have a php.ini file in your php directory
(I created mine by copying php-production.ini to php.ini)

4) Make sure PHP can see the PHP Windows extensions
In php.ini
Uncomment the last line of this section, (by removing the ; at the start of the line) and add the ext sub-directory

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
; extension_dir =

So the final line becomes:

extension_dir = ext

5) Enable the PDO Windows extension for SQLite
In php.ini
Uncomment this line (by removing the ; at the start of the line)
to get
extension=php_pdo_sqlite.dll

6) Enable the SQLite3 Windows extension
In php.ini
Uncomment this line (by removing the ; at the start of the line)
to get
extension=php_sqlite3.dll

7) Tell PHP where SQLite is.
Uncomment this line (by removing the ; at the start of the line) and put in the relevant directory
[sqlite3]
sqlite3.extension_dir = M:\sqlite3

No comments:

Post a Comment