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的主要内容,如果未能解决你的问题,请参考以下文章