Bug #79672 [Opn->Wfx]: Loading "pdo_sqlite.so" fails: undefined symbol: sqlite3_libversion
| From: | nikic@php.net | Date: | Tue, 22 Dec 2020 16:54:40 +0000 |
| Subject: | Bug #79672 [Opn->Wfx]: Loading "pdo_sqlite.so" fails: undefined symbol: sqlite3_libversion | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-231223@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=79672&edit=1
ID: 79672
Updated by: nikic@php.net
Reported by: npelov at croler dot net
Summary: Loading "pdo_sqlite.so" fails: undefined symbol:
sqlite3_libversion
-Status: Open
+Status: Wont fix
Type: Bug
Package: PDO SQLite
Operating System: Centos 7.8
PHP Version: 7.3.18
Block user comment: N
Private report: N
New Comment:
sqlite has been unbundled in PHP 7.4, so this issue is no longer applicable (earlier versions are
not actively supported anymore.)
Previous Comments:
------------------------------------------------------------------------
[2020-06-04 10:11:03] npelov at croler dot net
Description:
------------
If pdo_sqlite is compiled as shared with bundled sqlite, the module fails to load with following
error:
: symbol lookup error: /usr/local/php73/lib/php/extensions/no-debug-non-zts-20180731/pdo_sqlite.so:
undefined symbol: sqlite3_libversion
./configure --with-sqlite3=shared --with-pdo-sqlite=shared
make && make install
add to php.ini
extension=sqlite3.so
extension=pdo_sqlite.so
php -i|grep sqlite -A 5
phpPDO drivers => sqlite
: symbol lookup error
: /usr/local/php73/lib/php/extensions/no-debug-non-zts-20180731/pdo_sqlite.so: pdo_sqlite
undefined symbol: sqlite3_libversion
PDO Driver for SQLite 3.x => enabled
The solution suggested by jd at cpanel in bug 48614 works - patching configure script with this:
else
# use bundled libs
+
+ # This change is anchored here to avoid patch being misapplied. This really only needs to be
added
+ # when pdo_sqlite is compiled shared and using the bundled sqlite3. It shouldn't hurt
so long as the
+ # bundled sqlite3 is used though.
+ shared_objects_pdo_sqlite="$shared_objects_pdo_sqlite
ext/sqlite3/libsqlite/sqlite3.lo"
+
if test "$enable_maintainer_zts" = "yes"; then
threadsafe_flags="-DSQLITE_THREADSAFE=1"
else
However all of these are workarounds and they are not perfect. I want to use bundled sqlite, because
php is tested with it and I don't want to patch configure script every time because updating
gets more complicated.
I didn't write in bug 48614 because I assume it's for (unsupported) php 5 and that's
why it's not fixed. I'm not sure if php 7 bugs have to be repored separately.
Test script:
---------------
<?php
// make sure to load pdo_sqlite.so extension in php.ini
$memory_db = new PDO("sqlite::memory:");
Expected result:
----------------
no error message
Actual result:
--------------
php: symbol lookup error:
/usr/local/php73/lib/php/extensions/no-debug-non-zts-20180731/pdo_sqlite.so: undefined symbol:
sqlite3_open_v2
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=79672&edit=1