PHP 不适用于 SQLite

Posted

技术标签:

【中文标题】PHP 不适用于 SQLite【英文标题】:PHP isn't working with SQLite 【发布时间】:2012-04-12 20:11:22 【问题描述】:

好的,这是我设置的第一台服务器。我有一个运行 Ubuntu 11.10 的系统。我正在运行 Lighttpd 并设置了 php,但我希望 PHP 和 SQLite 一起工作。我使用以下方式安装它们:

sudo apt-get install lighttpd
sudo apt-get install php5-cgi
sudo apt-get install sqlite
sudo apt-get install php5-sqlite

PHP 工作正常,但任何带有 sqlite 命令的脚本都只会返回一个空白页。我打开了 php 错误消息并运行了这个脚本:

<?php
echo sqlite_libversion();
echo "<br>";
echo phpversion();
?>

返回:

Fatal error: Call to undefined function sqlite_libversion()

出了什么问题? :(

php -m 产生这个:

[PHP 模块] bcmath bz2 calendar Core ctype date dba dom ereg exif fileinfo filter ftp gettext hash iconv json libxml mbstring mhash openssl pcntl pcre PDO pdo_sqlite Phar posix readline 反射 session shmop SimpleXML soap sockets SPL sqlite3 标准 sysvmsg sysvsem sysvshm tokenizer wddx xml xmlreader xmlwriter zip zlib

【问题讨论】:

你在 Php.ini 文件中为 sqlite 设置了什么扩展名? 【参考方案1】:

Php.ini 文件的扩展名应该是:

extension=pdo_sqlite.so
extension=sqlite.so

【讨论】:

它们应该放在 php.ini 文件的哪个位置?【参考方案2】:

根据http://packages.ubuntu.com/oneiric/all/php5-sqlite/filelist php5-sqlite 包含两个扩展模块

pdo_sqlite.so -> http://docs.php.net/pdo sqlite3.so -> http://docs.php.net/sqlite3

所以看起来php5-sqlite 没有提供您正在寻找的模块。 如果您没有大量遗留代码,我建议您使用PDO,尤其是。因为 sqlite 模块将是 moved from core php to pecl(虽然 pecl 没有问题......):

自 PHP 5.0 起,此扩展与 PHP 捆绑在一起。从 PHP 5.4 开始,此扩展只能通过 PECL 使用。

【讨论】:

如何安装这个模块? 我真的不知道。我觉得很奇怪php5-sqlite 提供了三个 .ini 文件,其中两个匹配包提供的两个模块。然后是/etc/php5/conf.d/sqlite.ini,但没有sqlite.so。严格来说,这与其说是开发人员的问题,不如说是管理员的问题。您可能会在其他其中一台 stackexchange 服务器上获得更好的答案。【参考方案3】:

您是否在 php.ini 中添加了 sqlite 扩展?

看来这个人也有同样的问题:http://forum.alwaysdata.com/viewtopic.php?id=1034

该线程中的解决方案是添加

extension=pdo_sqlite.so
extension=sqlite.so

到 php.ini,最好在“动态扩展”部分下,但它们可以放在任何地方。

【讨论】:

请在此答案中总结链接文本,否则如果/当链接中断时,它没有任何用处。

以上是关于PHP 不适用于 SQLite的主要内容,如果未能解决你的问题,请参考以下文章

用于下载文件的php代码不适用于ajax [重复]

PHP 不适用于 SQLite

php 常量()不适用于命名空间?

PayPal Express Checkout 不适用于 php

imagecreatefrombmp 不适用于 php

为啥 mail() PHP 函数不适用于 WAMP 默认安装?