升级后 SQLite 停止工作

Ste*_*roz 4 php sqlite 12.04

正如你们中的许多人所做的那样,本周我从 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
Run Code Online (Sandbox Code Playgroud)

第 4 行正在

$db = new SQLiteDatabase('test.sqlite', 0666);
Run Code Online (Sandbox Code Playgroud)

任何提示?


编辑

你可以在这里看到我的 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
Run Code Online (Sandbox Code Playgroud)

And*_*ovs 6

扩展

根据PHP 站点上的供应商特定数据库扩展页面,有两个SQLite扩展:

SQLite3扩展是SQLite的更新替代品,它很快就会过时

自 PHP 5.0 起默认启用 SQLite 扩展。
从 PHP 5.4 开始,SQLite 扩展只能通过 PECL 使用。

Ubuntu 10.04 与 12.04

现在,一些实用性。让我们看一下使用以下命令安装的默认 Web 服务器配置:

sudo apt-get install apache2 php5 php5-sqlite
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

因此,Ubuntu 12.04 默认 PHP 安装(截至撰写本文时 - 版本 5.3.10)已经没有sqlite内置扩展。上面的输出表明只有sqlite3扩展存在,它来自php5-sqlitepackage.json。

解决方案

选择你的邪恶:

  1. 从长远来看,正确的方法是调整代码以使其在SQLite3下工作。这些变化很小,但这可能涉及对大量文件进行一些不需要的复制粘贴式工作。如果是这种情况,并且正确在这里不是一个正确的词,则解决方案 2 适合您。
  2. PECL安装过时的扩展。