【问题标题】:Why won't PHP see the sqlite libraries when it runs a script?为什么 PHP 在运行脚本时看不到 sqlite 库?
【发布时间】:2012-12-11 16:57:04
【问题描述】:

我正在尝试用 PHP 和 sqlite 做一些事情。我已经加载了 sqlite3 和 pdo_sqlite3 库(根据 php -m),php.ini 添加了库,但我仍然得到该函数(无论是 sqlite_open() 还是 sqlite_versioninfo())的致命错误没找到。 phpinfo() 显示两个库都已加载。那么为什么我不能使用它们呢?

关于我的设置的一些信息:

我在 debian 上运行,我正在运行 Apache2 和 PHP 5.4.4-4。我不记得我是如何安装 PHP 的(显然不是通过 apt-get),但它是通过 Apache 启动的。

php -m的输出:

root@ns:~# php -m [PHP 模块] bcmath bz2 calendar 核心 ctype curl date dba dom ereg exif fileinfo filter ftp gettext hash iconv imagick json libxml mbstring mhash mysql mysqli openssl pcntl pcre PDO pdo_mysql pdo_sqlite Phar posix 反射会话 shmop SimpleXML 肥皂套接字 SPL sqlite3 ssh2 标准 sysvmsg sysvsem sysvshm tokenizer wddx xml xmlreader xmlwriter zip zlib

[Zend 模块]

确切的错误文本是PHP Fatal error: Call to undefined function sqlite_libversion() in [file] on line 14,它通过命令行和网络服务器发生。

如果我想到什么要补充的,我会在这里补充。

【问题讨论】:

  • 致命错误来自通过命令行或网络服务器运行的脚本?
  • @rambocoder 我更新了我的问题。它通过命令行和网络服务器发生。

标签: php sqlite


【解决方案1】:

您正在使用 sqlite 扩展中的函数,但您启用了单独的 sqlite3 扩展。

而 pdo_sqlite3 仅适用于 pdo。

【讨论】:

  • 嗯,这看起来像是解决方案。我想我必须安装 sqlite,我目前对 OO 的东西不感兴趣。谢谢!
  • 否则我只能忍气吞声,只使用 sqlite3,它已安装,PECL 告诉我 sqlite 已被 PHP 取代,而 PHP 说它又回到了 PECL。所以是的,sqlite3 看起来是更好的选择。
  • 考虑使用 pdo,除非 sqlite3 扩展中有一些你真的需要 pdo 不允许你访问的东西,因为 pdo 是 php 中的标准并且它工作得很好。我在 sqlite3 中看到的唯一独特的东西是 busyTimeout() 和 loadExtension()
【解决方案2】:

如果你用php-fpm运行php,并且在php-fpm启动后编译了库,你应该重启php-fpm,新的库才会生效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多