php: symbol lookup error: lib/php/extensions/no-debug-non-zts-20151012/pdo_sqlite.so: undefined symbol: sqlite3_libversion
编译 php 时使用了以下参数 将 sqlite3 和 pdo_sqlite 扩展编译成了动态链接库
- --with-sqlite3=shared --with-pdo-sqlite=shared
复制代码 然后在 php.ini 中加载扩展
- extension = sqlite3.so
- extension = pdo_sqlite.so
复制代码 然后就触发了 php pdo_sqlite.so: undefined symbol: sqlite3_libversion 的错误。
解决办法一,不使用 pdo_sqlite 扩展,将- extension = pdo_sqlite.so
复制代码 改为- ;extension = pdo_sqlite.so
复制代码 或直接删除这一行。这种办法治标不治本。
解决办法二,重新编译 php,静态编译 php 的 sqlite3 和 pdo_sqlite 扩展。- --with-pdo-sqlite --with-sqlite3
复制代码 以上只展示和 sqlite 有关的编译参数,其它编译参数请自行处理。需要注意的是,静态编译 php 扩展后,不会生成扩展的动态链接库文件,需要将 php.ini 中的相关配置删除掉,否则会因为找不到文件而报错。- extension = sqlite3.so
- extension = pdo_sqlite.so
复制代码 在 windows 上,php 扩展动态链接库文件的后缀名是 .dll,在 Linux 上文件的后缀名是 .so。 |
|