php-sqlite unter Enterprise Linux
Die Tage hatte ich das Problem, dass eine SQLite-Anwendung auf einem Enterprise Linux-System installiert werden sollte. "Nichts leichter als das", dachte ich mir und suchte in der Paketverwaltung nach "php-sqlite
" - den Paketnamen hatte ich noch von meinem letzten SQLite-Experiment unter Debian in Erinnerung. Dummerweise gibt es ein solches Paket nicht für CentOS oder dergleichen.
Auch in zusätzlichen Repositories, wie ELRepo oder Repoforge, bin ich nicht fündig geworden. Also blieb nur eine händische Kompilation..
Wichtig ist, dass neben PHP und SQLite auch das PHP-Entwicklungspaket sowie der PHP-PDO Treiber und einige Entwicklertools installiert sind:
1# yum install httpd php sqlite php-devel make gcc php-pdo
Für die installierte Version von PHP muss nun der Quellcode bezogen werden. Zum Zeitpunkt der Erstellung dieses Artikels war das bei CentOS und RedHat 6.3 die Version 5.3.3. Verifzieren lässt sich das Ganze recht einfach mittels YUM:
1# yum info php | grep Version
2Version : 5.3.3
Der Download erfolgt dann über das alte Downloadarchiv von PHP - der Tarball wird anschließend entpackt. Im extrahierten Ordner befindet sich für das SQLite-Modul ein Ordner unterhalb "ext/sqlite
". In diesem Ordner wird das Tools phpize
ausgeführt und das Modul letztendlich übersetzt und installiert:
1# cd /usr/src
2# wget http://museum.php.net/php5/php-5.3.3.tar.gz
3# tar xvfz php-5.3.3.tar.gz
4# cd php-5.3.3/ext/sqlite
5# phpize
6# ./configure
7# make
8# make install
Für das neue Modul wird anschließend eine Konfigurationsdatei erstellt und der Apache-Dienst neugestartet. Wer sicher gehen will, dass das neue Modul auch tatsächlich verwendet wird, kann ein kleines PHP-Skript "test.php
" basteln, dass die Konfiguration von PHP ausgibt.
1# `echo 'extension=sqlite.so`' > `/etc/php.d/sqlite.ini`
2# service httpd restart
3# echo '<?php phpinfo(); ?>" > /var/www/html/test.php
Auf der genertierten Webseite sollte es nun unter anderem die Abschnitte "pdo_sqlite
" und "SQLite" geben:
Ist dies der Fall, scheint das Modul zu funktionieren. 🙂
Wer möchte, kann mit dem folgenden Skript eine kleine SQLite-Datenbank aufbauen und testen - dazu muss unterhalb /var/www/html
ein Ordner db
existieren, der volle Schreibrechte hat:
1# cd /var/www/html
2# mkdir db
3# chmod 777 db
4# vi test_sqlite.php
5<?php
6//Verbindung herstellen
7try { $database = new SQLiteDatabase('db/test.sqlite', 0666, $error_msg); }
8catch(Exception $e) { die($error_msg); }
9//Dummy-Tabelle erstellen
10$query = 'CREATE TABLE Test ' .
11 '(vorname TEXT, nachname TEXT)';
12if(!$database->queryExec($query, $error_msg)) { die($error_msg); }
13//Eintrag vornehmen
14$query = "INSERT INTO Test(vorname, nachname) VALUES ('Max', 'Mustermann')";
15if(!$database->queryExec($query, $error_msg)) { die($error); }
16?>
Nach Ausführung des Skriptes über den Webbrowser existiert unterhalb des Ordners db
eine Datei, deren Inhalt man ansatzweise mit strings
auslesen kann:
1# strings db/test.sqlite
2This file contains an SQLite 2.1 database
3Htable
4Test
5Test
6CREATE TABLE Test (vorname TEXT, nachname TEXT)
7Mustermann
...und schon klappt's auch mit SQLite unter PHP auf Enterprise Linux. 🙂