PHP 启用 sqlite phpinfo 状态 --without-sqlite

PHP 启用 sqlite phpinfo 状态 --without-sqlite

我见过类似的问题,但没有一个能充分解决我的情况。我在亚马逊云服务器上运行 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 库。sqlitephpinfo()页面中搜索以查看是否安装了SQLite 库已启用。

答案3

无论何时,请phpinfo();确保您正在查看正确的 php.ini(我想我们所有人都遇到过这种情况,当使用一个 php.ini 时却查看另一个 php.ini),因此请查看“ Loaded Configuration File”,另一件事是查看我的 RHEL 系统上的“扫描此目录以查找其他 .ini 文件”,它显示我有/etc/php.d/更多 php.ini 文件驻留的位置(包括 sqlite3.ini)。

相关内容