皆さんの多くがそうであったように、私は今週LucidからPreciseにアップグレードしましたが、ほとんどすべてがうまくいくようです。
sQLiteは以前はうまく機能していましたが、もう機能していませんでした。
Phpinfo()、php.ini、sqlite3.iniのすべてをチェックしました。
sqlite
コマンドは正常に機能しますが、PHP ... * PLOP *を使用しようとすると、何も機能しません。
私はメッセージを受け取ります
Fatal error: Class 'SQLiteDatabase' not found in /var/www/test/sqlite/index.php on line 4
行4
$db = new SQLiteDatabase('test.sqlite', 0666);
ヒントはありますか?
編集
ここで私のphpinfo()を見ることができます: http://Pastebin.com/jQ7Bz0GN
Apacheログは
* Restarting web server Apache2
Apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting Apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
拡張機能
PHPサイトの Vendor Specific Database Extensions ページによると、2つのSQLite拡張機能があります。
SQLite3拡張機能はSQLiteの新しい置き換えであり、 まもなく廃止されます :
SQLite拡張機能は、PHP 5.0以降、デフォルトで有効になっています。
PHP 5.4以降、SQLite拡張機能はPECLを介してのみ使用できます。
Ubuntu 10.04 vs 12.04
今、いくつかの実用性。以下を使用してインストールされたデフォルトのWebサーバー構成を見てみましょう。
Sudo apt-get install Apache2 php5 php5-sqlite
Ubuntu 10.04:
# php --ri sqlite
SQLite
SQLite support => enabled
PECL Module version => 2.0-dev
SQLite Library => 2.8.17
SQLite Encoding => UTF-8
# php --ri sqlite3
sqlite3
SQLite3 support => enabled
SQLite3 module version => 0.7-dev
SQLite Library => 3.6.22
Ubuntu 12.04:
# php --ri sqlite
Extension 'sqlite' not present.
# php --ri sqlite3
sqlite3
SQLite3 support => enabled
SQLite3 module version => 0.7-dev
SQLite Library => 3.7.9
そのため、Ubuntu 12.04のデフォルトのPHPインストール(これを書いている時点で-バージョン5.3.10)には既にsqlite
拡張が組み込まれていません。上記の出力では、sqlite3
拡張のみphp5-sqlite
パッケージに由来するものが存在します。
ソリューション
あなたの悪を選ぶ:
Andrejs Cainikovs 'の回答に従い、コードをアップグレードすることを強く勧めます。ここでは、SQLiteDatabase
クラス( sqlite ライブラリ)からSQLite3
クラス( SQLite ライブラリ)。
例えば:
SQLiteDatabase
-> SQLite3
、SQLiteDatabase::unbufferedQuery
-> SQLite3::query
、SQLiteResult::fetchAll(SQLITE_*)
-> SQLite3Result::fetchArray(SQLITE3_*)
など.フェッチに関しては、古い SQLite にありました:
$rowsIMEI = $db->unbufferedQuery($imeiSQL)->fetchAll(SQLITE_ASSOC);
foreach($rowsIMEI as $r)
{
...
}
一方、新しい SQLite では次のようにする必要があります。
$rowsIMEI = $db->query($imeiSQL);
while($r = $rowsIMEI->fetchArray(SQLITE3_ASSOC))
{
...
}
他の変更も同様の作業量を必要とするため、これは生涯にわたるプロセスではありません。
開始する前に、まず SQLite Studio などのツールを使用して、データベースファイルを2.1から3.0に変換する必要があります。サイズを半分にまで下げることができるので、戦う価値があると思います。
ソリューション(ではなく本番用、プレイ用のみ):
1。 ubuntu11.04またはその他から「php5-sqlite」debファイルを取得します
2。展開して、sqlite.soファイルを見つけます。
-sqlite.soは他の方法で、たとえば古いシステムから取得できます-
3。 sqlite.soを/ usr/lib/php5/20090626 + lfs /に配置します
4。これをphp.ini(/etc/php5/Apache2/php.ini)に追加します。
extension=sqlite.so