我见过类似的问题,但没有一个能充分解决我的情况。我在亚马逊云服务器上运行 Apache 和 PHP 5.3.6。
phpinfo 一直提示 sqlite 被禁用。至少从 configure 行来看是这样的:
'./configure' ... '--without-sqlite'
在 phpinfo() 输出的其他部分:
PDO
PDO drivers mysql, sqlite
PDO Driver for SQLite 3.x enabled
SQLite Library 3.6.20
sqlite3
SQLite3 support enabled
SQLite3 module version 0.7-dev
SQLite Library 3.6.20
Directive Local Value Master Value
sqlite3.extension_dir no value no value
并且至少下列一个 PHP 命令失败:
if (!extension_loaded('SQLite') OR !function_exists('sqlite_open'))
Yum install 指出 sqlite 和 pdo-lite 都已安装。
我尝试通过编辑本地 php.ini 添加以下内容来启用 sqlite:
; Enable sqlite3 extension module
extension=sqlite3.so
我检查了主 php.ini (/etc/php.ini),没有关于禁用它的具体信息。事实上,php.d 中加载了一个子配置文件,该文件也指定了此扩展以及 pdo-sqlite 的另一个扩展
我正在寻找或尝试一些东西。有什么建议吗?
我如何找到 PHP 配置的说明位置?
谢谢
答案1
您的代码未正确指定扩展名,因此当然会失败。如我们所见,正确的扩展名是sqlite3
。
if (!extension_loaded('SQLite')...
反正。
PHP 的 RPM 构建实际上重建了 PHP 四次。第一次构建时未启用任何扩展,用于将其作为 加载到 Apache 中mod_php
,第二次构建时将所有扩展作为共享内存对象。还有一次构建用于 PHP 命令行,第四次构建的用途我现在忘记了。
因此,没有内置扩展的版本会与从其他版本构建的扩展捆绑在一起。因此,PHP 可能会说它配置时没有任何扩展,但仍然可以使用它们。
答案2
确保/etc/php.ini
出现在加载配置文件线。
--without-sqlite
不要谈论是否安装了 sqlite 库。sqlite
在phpinfo()
页面中搜索以查看是否安装了SQLite 库已启用。
答案3
无论何时,请phpinfo();
确保您正在查看正确的 php.ini(我想我们所有人都遇到过这种情况,当使用一个 php.ini 时却查看另一个 php.ini),因此请查看“ Loaded Configuration File
”,另一件事是查看我的 RHEL 系统上的“扫描此目录以查找其他 .ini 文件”,它显示我有/etc/php.d/
更多 php.ini 文件驻留的位置(包括 sqlite3.ini)。